C#设计模式之工厂模式(1)

来源:互联网 发布:imadeface软件 编辑:程序博客网 时间:2024/06/05 15:34

使用设计模式必须首先要理解对象、继承和接口,一般情况下我们创建对象时采用new的方式,这和程序如何创建对象有关。再进一步思考,很多时候根据程序的需求不同我们要创建对象,因而我们可以将创建过程抽象成一个专门的类中,这样程序就会更灵活,更通用。

我们可以利用一个共同的基类以完全通用的方式与这些提供程序相关的对象交互。工厂模式里提供了一个简单的决策类,它根据提供的数据返回基类中的多个子类的一个。

1.      简单工厂模式:它的运行一般是根据提供的数据,返回已定义的几个类中的一个类中的实例。通常它返回的类中都有一个共同的父类和方法,但在每个子类中,该方法的所要执行的任务是不同的,而且根据不同的数据进行了优化。下面是示意图


示例代码,这是一个计算器的范例

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()        {            double result = NumberA + NumberB;            return result;        }    }    public class OperationSub : Operation    {        public override double GetResult()        {            double result = NumberA - NumberB;            return result;        }    }    public class OPerationMulti : Operation    {        public override double GetResult()        {            double result = NumberA * NumberB;            return result;        }    }    public class OperationDiv : Operation    {        public override double GetResult()        {            double result = NumberA / NumberB;            return result;        }    }
创建简单工厂

public static Operation Creatoperation(string operate)        {            Operation oper = null;            switch (operate)            {                case "+":                    oper = new OperationAdd();                    break;                case "-":                    oper = new OperationSub();                    break;                case "*":                    oper = new OPerationMulti();                    break;                case "/":                    oper = new OperationDiv();                    break;                default:                    break;            }            return oper;        }

调用简单工厂

Operation oper = new Operation();oper=SimpleFactory01.Creatoperation("/");oper.NumberA = 10;oper.NumberB = 20;Console.WriteLine(oper.GetResult());Console.ReadLine();




原创粉丝点击