zoukankan      html  css  js  c++  java
  • 设计模式:工厂方法

    工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

    namespace SimleFactory
    {
        public class Operation
        {
            public double NumberA { get; set; }
            public double NumberB { get; set; }
            public virtual double GetResult()
            {
                double result = 0;
                return result;
            }
        }
        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)
                    throw new Exception("除数不能为0.");
                return NumberA / NumberB;
            }
        }
        /// <summary>
        /// 简单工厂
        /// </summary>
        public class OperationFactory
        {
            public static Operation CreateOperation(string operate)
            {
                Operation oper = null;
                switch(operate)
                {
                    case "+":
                        oper = new OperationAdd();
                        break;
                    case "-":
                        oper = new OperationAdd();
                        break;
                    case "*":
                        oper = new OperationAdd();
                        break;
                    case "/":
                        oper = new OperationAdd();
                        break;
                }
                return oper;
            }
        }
        /// <summary>
        /// 工厂方法
        /// </summary>
        public interface IFactory
        {
            Operation CreateOperation();
        }
        public class AddFactory : IFactory
        {
            public Operation CreateOperation()
            {
                return new OperationAdd();
            }
        }
        public class SubFactory:IFactory
        {
            public Operation CreateOperation()
            {
                return new OperationSub();
            }
        }
        public class MulFactory:IFactory
        {
            public Operation CreateOperation()
            {
                return new OperationMul();
            }
        }
        public class DivFactory:IFactory
        {
            public Operation CreateOperation()
            {
                return new OperationDiv();
            }
        }
    }
    View Code

    测试代码:

                IFactory factory = new AddFactory();
                Operation oper= factory.CreateOperation();
                oper.NumberA = 1;
                oper.NumberB = 2;
                double result = oper.GetResult();
                Assert.AreEqual(result, 3);
    View Code
  • 相关阅读:
    第十二周作业
    第四周课程总结&实验报告二
    第三周课程总结&实验报告一
    java第二周学习总结
    2019春总结作业
    第二次课程设计实验报告
    第十二周编程总结
    第十周作业
    实验报告(六)&第八周学习总结
    实验报告(五)&第七周学习总结
  • 原文地址:https://www.cnblogs.com/uptothesky/p/5254346.html
Copyright © 2011-2022 走看看