zoukankan      html  css  js  c++  java
  • 《大话设计模式》学习笔记5:工厂方法模式

      

    计算器示例:

      

    1.运算类:

        public class Operation
        {
            public double NumberA { get; set; }
            public double NumberB { get; set; }
            public virtual double GetResult()
            {
                return 0;
            }
        }

    2.加减乘除类(以加法类为例):

        public class AddOperation : Operation
        {
            public override double GetResult()
            {
                return NumberA + NumberB;
            }
        }

    3.工厂类接口:

        public interface IFactory
        {
            Operation CreateOperation();
        }

    4.加减乘除工厂(以加法工厂为例):

        public class AddFactory:IFactory
        {
            public Operation CreateOperation()
            {
                return new AddOperation();
            }
        }

    5.客户端代码:

        class Program
        {
            static void Main(string[] args)
            {
                IFactory operFactory = new AddFactory();
                Operation oper = operFactory.CreateOperation();
                oper.NumberA = 1;
                oper.NumberB = 2;
                Console.WriteLine(oper.GetResult());
            }
        }

      简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。缺点是违背了开放-封闭原则。

      工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行。

  • 相关阅读:
    nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
    nyoj 211 Cow Contest
    nyoj 203 三国志 dijkstra+01背包
    nyoj 170 网络的可靠性
    nyoj 120 校园网络
    nyoj 115 城市平乱 dijkstra最短路
    nyoj 42 一笔画问题 欧拉路径
    nyoj 38 布线问题
    hdu 2089 不要62--数位dp入门
    nyoj 712 探 寻 宝 藏--最小费用最大流
  • 原文地址:https://www.cnblogs.com/walden1024/p/4487957.html
Copyright © 2011-2022 走看看