工厂方法模式
简单工厂模式的升级版--工厂方法模式 简单工厂模式:属于创建型模式,又叫静态工厂方法模式,但不属于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(); } } //以下几个工厂省略 可以说工厂方法模式是简单工厂模式的进一步抽象和推广,也可以说简单工厂模式是工厂方法模式的简化。对于多态性的进一步使用,工厂方法模式在保留简单工厂模式优点的同时,也克 服了它的缺点。工厂方法模式也有其缺点,每增加一个产品,就要相应地添加一个产品工厂类,增加了额外的开发量。 对于是选择工厂方法模式和简单工厂模式,要取决于具体的应用。正如从两个模式的名称就可以看出,对于一些比较简单的应用,“产品”比较少时,使用简单工厂模式就可以满足要求。而对 于“产品”比较丰富的应用,过多的分支不利于程序的维护,这时应该选择工厂方法模式来降低程序的维护量。