【设计模式】简单工厂VS工厂方法

来源:互联网 发布:淘宝网客服电话400 编辑:程序博客网 时间:2024/06/05 06:39
【简单工厂】
        简单工厂,就是用一个单独的类来创造实例的过程。
        简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端和选择条件实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
//运算简单工厂类    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"*":                    oper = new OperationMul();                    break;                case"/":                    oper = new OperationDiv();                    break;            }            return oper;        }    }

【工厂方法】
        工厂方法是定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类中。
        工厂方法是把简单工厂的内部逻辑判断移到客户端代码执行,增加功能是,就不用修改工厂类,而是直接修改客户端就可以了。
//工厂接口    interface IFactory    {        Operation CreateOperation();    }    //加法类工厂    class AddFactory:IFactory    {        public Operation CreateOperation()        {            return new OperationAdd();        }    }    //减法类工厂    class SubFactory:IFactory    {        public Operation CreateOperation()        {            return new OperationSub();        }    }    //乘法类工厂    class MulFactory : IFactory    {        public Operation CreateOperation()        {            return new OperationMul();        }    }    //除法类工厂    class DivFactory : IFactory    {        public Operation CreateOperation()        {            return new OperationDiv();        }    }

【VS】
        简单工厂和工厂方法都是集中封装了对象的创建,使得更换对象时,不需要做太大的改动,降低了客户端和产品对象之间的耦合。
        工厂方法克服了简单工厂违背开放——封闭原则的缺点,又保持了封装对象创建过程的优点。工厂方法是简单工厂的进一步抽象和推广。
0 0