zoukankan      html  css  js  c++  java
  • 九.工厂方法模式

    工厂方法模式:

           定义一个用于创建对象的接口,让子类决定实例化哪一个类

           把选择放到了客户端。

           与简单工厂的区别:克服简单工厂违背开放——封闭原则的缺点

                  简单工厂的最大优点在工厂中包含必要的逻辑判断,根据客户端的传入条件动态选择实例化的类,对客户端来说去除了与具体产品的依赖。

    实体和具体方法:

       class Operation

        {

           string num1 = string.Empty;

           string num2 = string.Empty;

           public string Num1

           {

               get { return num1; }

               set { num1 = value; }

           }

           public string Num2

           {

               get { return num2; }

               set { num2 = value; }

           }

           public virtual  string GetResult()

           {

               string result=string.Empty;

               return GetResult();

           }

        }

       class AddOperation : Operation

        {

           public override string GetResult()

           {

               string result;

               result = (Convert.ToDouble(Num1) + Convert.ToDouble(Num2)).ToString();

               return result;

           }

        }

       class SubOperation : Operation

        {

           public override string GetResult()

           {

               string result;

               result = (Convert.ToDouble(Num1) -Convert.ToDouble(Num2)).ToString();

               return result;

           }

    }

    工厂方法:

               interface IFactory

        {

           Operation CreateOperation();

        }

       class AddFactory : IFactory

        {

           public Operation CreateOperation()

           {

               return new AddOperation();

           }

        }

       class SubFactory : IFactory

        {

           public Operation CreateOperation()

           {

               return new SubOperation();

           }

    }

    调用工厂方法:

                       IFactoryoperFactory = new AddFactory();

               Operation oper = operFactory.CreateOperation();

               oper.Num1 = "2";

               oper.Num2 = "1";

               Console.WriteLine(oper.GetResult());

               Console.ReadKey();

  • 相关阅读:
    BZOJ3560: DZY Loves Math V(欧拉函数)
    BZOJ2693: jzptab(莫比乌斯反演)
    洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)
    BZOJ3884: 上帝与集合的正确用法(欧拉函数 扩展欧拉定理)
    codeforces757E. Bash Plays with Functions(狄利克雷卷积 积性函数)
    等差数列与等比数列
    Codeforces#498F. Xor-Paths(折半搜索)
    在驱动和应用程序间共享内存
    Documentation/sched-bwc.txt 的中文翻译
    Windows NT 驱动程序开发人员提示 -- 应注意避免的事项
  • 原文地址:https://www.cnblogs.com/yaoge/p/1815230.html
Copyright © 2011-2022 走看看