23种设计模式-----工厂模式

1.定义

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。

因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以

考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

2.分类

1)简单工厂模式(Simple Factory) 
2)工厂方法模式(Factory Method) 
3)抽象工厂模式(Abstract Factory) 

3.简单工厂模式

建立一个工厂(一个函数或一个类方法)来制造新的对象。


当需要加法类的时候,调用工厂类的CreateOperate(),要指定制造的Product,看看大话设计模式中的例子:

扫描二维码关注公众号,回复: 2711780 查看本文章
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;
}
}
优点:客户端不需要修改代码。

缺点:当需要增加新的运算类的时候,不仅需新加运算类,还要修改工厂类,违反了开闭原则。

4.工厂方法模式

这个和简单工厂有区别,简单工厂模式只有一个工厂,工厂方法模式对每一个产品都有相应的工厂
  优点:增加一个运算类(例如N次方类),只需要增加运算类和相对应的工厂,两个类,不需要修改工厂类。
  缺点:增加运算类,会修改客户端代码,工厂方法只是把简单工厂的内部逻辑判断移到了客户端进行。

5.抽象工厂模式




优点:易于交换产品系列,例如Access和SQLServer数据库之间切换。

缺点:例如增加一个机箱产品,不仅需要添加三个类“机箱类,微软机箱,惠普机箱”,还要修改惠普工厂,微软工厂支持制造机箱。而添加一个联想工厂的时候,只需要添加三个类,使用联想工厂还是要修改客户端代码的。

猜你喜欢

转载自blog.csdn.net/VP_19951105/article/details/74931210