zoukankan      html  css  js  c++  java
  • 设计模式-工厂模式

    一、简单工厂模式
    实现效果
    static void Main(string[] args)
            {

                //非工厂模式
                //OperationAdd add = new OperationAdd();
                //add.NumberA = 2;
                //add.NumberB = 3;
                //Console.WriteLine(add.GetResult());

                //简单工厂模式
                Operation ope = OperationFactory.creatOperate("+");
                ope.NumberA = 5;
                ope.NumberB = 2;
                Console.WriteLine(ope.GetResult());

            }
     
    实现过程:
    (1)创建Operation抽象类
    public abstract class Operation
        {
            public double NumberA;
            public double NumberB;
            public abstract double GetResult();
        }
    (2)分别用OperationAdd、OperationSub、OperationMul、OperationDiv类继承Operation抽象类
    public class OperationAdd : Operation
        {
            public override double GetResult()
            {
                return NumberA + NumberB;
            }
        }
     
    public class OperationSub : Operation
        {
            public override double GetResult()
            {
                return NumberA - NumberB;
            }
        }
     
      public class OperationMul : Operation
        {
            public override double GetResult()
            {
                return NumberA * NumberB;
            }
        }
     
    public class OperationDiv : Operation
        {
            public override double GetResult()
            {
                if (NumberB==0)
                {
                    return 0;
                }
                return NumberA / NumberB;
            }
        }
     
    (3)创建工厂类OperationFactory
    public  class OperationFactory
        {
            public static Operation creatOperate(string operate)
            {
                Operation ope=null;
                switch (operate)
                {
                    case "+":
                        ope= new OperationAdd();
                        break;
                    case "-":
                        ope = new OperationSub();
                        break;
                    case "*":
                        ope = new OperationMul();
                        break;
                    case "/":
                        ope = new OperationDiv();
                        break;
                }
                return ope;
            }
        }
     
    二、工厂方法模式
    工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
      static void Main(string[] args)
            {

                //非工厂模式
                //OperationAdd add = new OperationAdd();
                //add.NumberA = 2;
                //add.NumberB = 3;
                //Console.WriteLine(add.GetResult());

                //简单工厂模式
                //Operation ope = OperationFactory.creatOperate("+");
                //ope.NumberA = 5;
                //ope.NumberB = 2;
                //Console.WriteLine(ope.GetResult());

                //工厂方法模式
                IFactory operFactory = new AddFactory();
                Operation oper = operFactory.CreatOeration();
                oper.NumberA = 5;
                oper.NumberB = 6;
                Console.WriteLine(oper.GetResult());
            }
     
    实现过程
    (1)原来的OperationAdd、OperationSub、OperationMul、OperationDiv类不变
    (2)添加接口IFactory,以及AddFactory、SubFactory、MulFactory和DivFactory类实现IFactory,分别在类的内部创建加减乘除操作的实例。
    interface IFactory
        {
            Operation CreatOeration();
        }
    class AddFactory : IFactory
        {
            public Operation CreatOeration()
            {
                return new OperationAdd();
            }
        }
     
    class SubFactory : IFactory
        {
            public Operation CreatOeration()
            {
                return new OperationSub();
            }
        }
     
    class MulFactory : IFactory
        {
            public Operation CreatOeration()
            {
                return new OperationMul();
            }
        }
     
    class DivFactory : IFactory
        {
            public Operation CreatOeration()
            {
                return new OperationDiv();
            }
        }
     

  • 相关阅读:
    mogodb 设置用户名密码认证
    axon mogoconfig
    ListUtils 对 list数据 分组 ,统计,求和 。。。
    jQuery 之 dom操作
    学习Java第二天
    字节跳动spring面试题,你能回答出几个
    CH340芯片选型
    Django的路由转换器的使用
    Vue之cli脚手架
    String中split(regex,limit)方法讲解
  • 原文地址:https://www.cnblogs.com/shougoule/p/12735012.html
Copyright © 2011-2022 走看看