JAVA设计模式——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)

转载:http://www.cnblogs.com/stonehat/archive/2012/04/16/2451891.html

 简单工厂模式

  

  当需要加法类的时候,调用工厂类的CreateOperate(),要指定制造的Product

  例如在大话设计模式P11给的运算工厂例子:

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;
    }
}
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 
  一个抽象工厂类,可以派生出多个具体工厂类。 
  每个具体工厂类只能创建一个具体产品类的实例。 
  抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 
  一个抽象工厂类,可以派生出多个具体工厂类。 
  每个具体工厂类可以创建多个具体产品类的实例。 

  区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
  工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

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

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

  

  在《大话设计模式》中,提出用简单工厂模式改进抽象工厂模式的方法。

  

扫描二维码关注公众号,回复: 2679250 查看本文章


猜你喜欢

转载自blog.csdn.net/yilouwen7522/article/details/80810901