工厂方法模式(Factory Method)
工厂方法模式的结构:
结构与角色如下图:
工厂方法模式的系统涉及到的角色如下:
1)抽象工厂(Creator):担任这个角色的是工厂方法模式的核心,它是与应用无关的,也就是上图的Creator。在实际系统中,这个角色也常常使用抽象Java类实现。
2)具体工厂(ConcreteCreator):担任这个角色的是实现了抽象工厂的具体Java类,也就是上图的ConcreteCreator01与ConcreteCreator02。
3)抽象产品(Product):工厂方法模式所创建的对象的超类型,也就是产品对象共同的父类或拥有的接口,如上图中的Product。
4)具体产品(ConcreteProduct):这个角色实现了抽象产品角色所声明的接口,如上图的ConcreteProduct01,ConcreteProduct02。
工厂方法模式在农场的实现:
抽象工厂角色FruitGardener 的源代码:
public interface FruitGardener {public Fruit factory();}
public class AppleGardener implements FruitGardener {@Overridepublic Fruit factory() {return new Apple();}}
public class GrapeGardener implements FruitGardener {@Overridepublic Fruit factory() {return new Grape();}}
public class StrawberryGardener implements FruitGardener {@Overridepublic Fruit factory() {return new Strawberry();}}