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();

  • 相关阅读:
    存储过程简介
    微信公众号开发之授权获取用户信息
    微信公众号开发之自定义菜单
    微信公众号开发之如何实现消息交互
    VS2012创建ATL工程及使用MFC测试COM组件
    Regsvr32 在64位机器上的用法(转载)
    模块加载失败 请确保该二进制文件在指定的路径中 找不到指定的模块(转载)
    [内核驱动] miniFilter 内核层与应用程序通信
    [内核驱动] VS2012+WDK 8.0 Minifilter实现指定扩展名文件拒绝访问
    InstallShield 2015 生成单个EXE包和 MSI包
  • 原文地址:https://www.cnblogs.com/yaoge/p/1815230.html
Copyright © 2011-2022 走看看