• 简单工厂


    正如其名,简单工厂,比较简单,直接给出一个计算器的demo(可以参见大话设计模式,按照自己的想法写的,有些许不同)

    1。 工厂中我们的switch也可以写到配置文件中,通过反射的方式创建操作对象。

    例如:<add key="+" operation="加法operation的程序集">

     使用工厂的核心:可以封装易变的部分到工厂中,外界一般使用基类对象或接口,来达到依赖导致的目的。

     系统代码中有很多地方都是通过工厂方式创建的。

    比如运行时中Application对象,

    比如,mvc中的controller的创建是通过 ControllerFactory创建的。这样的例子非常多。

    工厂模式,只不过再简单工厂的基础奖,增加了一个工厂的接口,每一个对象都对应一个工厂,其实本质都是简单工厂的变形。

    我们只要记住使用工厂的核心:封装变化,依赖倒置 就能抓住其精髓所在。

       public abstract class Operation
        {
            public abstract double GetOperaterResult(double num1, double num2);
        }
    
        public class Add : Operation
        {
            public override double GetOperaterResult(double num1, double num2)
            {
                return num1 + num2;
            }
        }
    
        public class Sub : Operation
        {
            public override double GetOperaterResult(double num1, double num2)
            {
                return num1 - num2;
            }
        }
    
        public class Mul : Operation
        {
            public override double GetOperaterResult(double num1, double num2)
            {
                return num1*num2;
            }
        }
    
        public class Div : Operation
        {
            public override double GetOperaterResult(double num1, double num2)
            {
                if (num2.Equals(0))
                {
                    throw new DivideByZeroException();
                }
                else
                {
                    return num1/num2;
                }
            }
        }
    

      

            public static Operation CreateOperation(string op)
            {
                Operation operation = null;
                switch (op)
                {
                    case "+":
                       operation=new Add();
                        break;
                    case "-":
                        operation=new Sub();
                        break;
                    case "*":
                        operation=new Mul();
                        break;
                    case "/":
                        operation=new Div();
                        break;
                    default:
                        break;
                }
                return operation;
            }
    

      

        static void Main(string[] args)
            {
                double num1 = 3.6;
                double num2 = 1.43;
    
                double res = SimpleFactory.CreateOperation("*").GetOperaterResult(num1, num2);
    
                Console.WriteLine(res);
                Console.ReadKey();
            }
    

      

  • 相关阅读:
    [转]Delphi DLL的创建、静态 以及动态调用
    Delphi txt文件的操作(读取、写入)
    为什么要使用动态链接库(DLL)
    TStringGrid 实现下拉框
    Ryzen 4000'Vermeer' CPU和Radeon RX'Big Navi'图形卡
    AMD Ryzen 5000‘Cezanne’APU
    AMD–7nm “Rome”芯片SOC体系结构,支持64核
    ARM Cortex-M嵌入式C基础编程(下)
    ARM Cortex-M嵌入式C基础编程(上)
    基于ARM Cortex-M的SoC存储体系结构和实战
  • 原文地址:https://www.cnblogs.com/superCow/p/3836707.html
Copyright © 2020-2023  润新知