Java设计模式之工厂方法模式(2)
- // 产品 Plant接口public interface IPlant { }//具体产品PlantA,PlantBpublic class PlantA implements IPlant { public PlantA () { System.out.println("create PlantA !"); } public void doSomething() { System.out.println(" PlantA do something ..."); }}public class PlantB implements IPlant { public PlantB () { System.out.println("create PlantB !"); } public void doSomething() { System.out.println(" PlantB do something ..."); }}// 工厂方法接口public interface IFactory { public IPlant createPlant();}//具体工厂方法public class FactoryA implements IFactory { public IPlant createPlant() { return new PlantA(); }}public class FactoryB implements IFactory { public IPlant createPlant() { return new PlantB(); }} //客户端IFactory plantFactory = new FactoryA();IPlant planta = plantFactory.createPlant(); planta.doSomething(); //若增加新产品PlantC时,只需要增加FactoryC工厂类和PlantC产品类即可。?
此外,还有一个数字的加减乘除例子
五、工厂方法模式与简单工厂模式
工厂方法模式与简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。
工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口,或者有共同的抽象父类。
当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好的符合了"开放-封闭"原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。
工厂方法模式退化后可以演变成简单工厂模式