工厂方法模式

 

简单工厂模式的升级版--工厂方法模式
简单工厂模式:属于创建型模式,又叫静态工厂方法模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
简单工厂类:
//简单面包工厂类
public class BreadFactory{
 public static BreadMaker MakeBread(int breadType){
           BreadMaker breakMaker=null;
          //选择面包类型
         switch( breadType){
              case 1:
                     breadMaker =new BlackBread();
                     break; 
              case 2:
                     breadMaker =new HoneyBread();
                     break; 
              default:
                break;
        }
       return breakMaker;
  }
}
 因为简单工厂模式违反了开放-封闭原则,所以对简单工厂模式进行升级成为了工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
//工厂接口
public interface IFactory{
   BreadMaker CreateBread();
}
不同的面包建立一个具体工厂方法来实现这个接口:
//黑面包的工厂方法实现
public class BlackBreadFactory implements IFactory{
     //覆盖父类抽象方法
    @Override
    public BreadMaker CreateBread(){
          return new BlackBread();
    }
}
//以下几个工厂省略
      可以说工厂方法模式是简单工厂模式的进一步抽象和推广,也可以说简单工厂模式是工厂方法模式的简化。对于多态性的进一步使用,工厂方法模式在保留简单工厂模式优点的同时,也克  服了它的缺点。工厂方法模式也有其缺点,每增加一个产品,就要相应地添加一个产品工厂类,增加了额外的开发量。

    对于是选择工厂方法模式和简单工厂模式,要取决于具体的应用。正如从两个模式的名称就可以看出,对于一些比较简单的应用,“产品”比较少时,使用简单工厂模式就可以满足要求。而对 于“产品”比较丰富的应用,过多的分支不利于程序的维护,这时应该选择工厂方法模式来降低程序的维护量。

 

posted @ 2017-03-23 16:37  IT改变世界  阅读(118)  评论(0编辑  收藏  举报