• 【设计模式】(一)工厂模式是什么?


    以下内容仍在更新完善...

    工厂模式是什么?

      要了解设计模式,首先了解什么是UML类图会有更大的帮助。

    UML类图

      图内“+”表示public,“-”表示private,“#”表示protected。

      继承关系:空心三角形+实线

      关联关系:实线箭头

      聚合关系:空心菱形+实线箭头

        聚合表示一种弱的"拥有"关系,体现的是A对象可以包含B对象,但是B对象不是A对象的一部分。

      合成(组合)关系:实心菱形+实线箭头

        合成(组合)表示一种强的"拥有"关系,体现的是整体与部分的关系,两者的生命周期一样。

      依赖关系:虚线箭头

      

    工厂模式

      简单工厂模式UML类图(以简单计算器为例)

      

     具体实现代码示例:

     public class OperationFactory   //简单运算工厂类
    
    {
    
      public static Operation createOperate(string operate)
    
      {
    
        Operation oper = NULL;
        switch (operate)
        {
          case "+":
            oper = new OperationAdd();
            break;
          case "-":
            oper = new OperationSub();
            break;
          case "*":
            ...
            break;
          case "/":
            ...
            break;
         }
          return oper;
      }
    
    }

      工厂类负责判断需要具体实例化的对象。再交由继承了运算类的具体单一运算类进行计算。下面给出运算类和加法类的代码示例:

      
    
      public class Operation //Operation运算类
    
      {
    
      private:
        double _number1 = 0;
        double _number2 = 0;
      public:
    
        double Number1
        {
          get{ return _number1; }
          set{ _number1 = value; }
        }
        double Number2
        { ... }
    
        virtual double GetResult() //虚函数
        {
          double result = 0;
          return result;
        }
      }
    
      
    
      class OperationAdd : Operation //继承Operation类
    
      {
    
       public override double GetResult()  //重写
       {
    
         double result = 0;
         result = Number1 + Number2;
         return result;
        }
      }

      客户端代码示例如下:

    Operation oper;
    oper = OperationFactory.createOperate("+");
    oper.Number1 = 1;
    oper.Number2 = 2;
    double result = oper.GetResult();
  • 相关阅读:
    简单C#、asp.net mvc验证码的实现
    c# 局域网文件传输实例
    c# http get请求与post请求实例
    轻松3步实现c#windowsform窗体美化
    c#内部类的使用
    java
    java
    java
    java
    java
  • 原文地址:https://www.cnblogs.com/Neko-YG/p/13359042.html
Copyright © 2020-2023  润新知