当需要把实例化的任务推迟到其子类来完成时,适用Factory Method模式。
Use Case::
顾客在在麦当劳购买食品。
顾客对服务员说, 来一个鸡翅,服务员就给顾客一个鸡翅。
顾客对服务员说,来一个汉堡,服务员就给顾客一个汉堡。
请考虑:麦当劳每周/月都会有新的食品投入到店里,系统要满足这个需要。
服务员无法知道下个月会有什么新食品要卖。
请为这个Use Case做出类图。
顾客在在麦当劳购买食品。
顾客对买鸡翅的服务员说, 来一个鸡翅,买鸡翅的服务员就给顾客一个鸡翅。
顾客对买汉堡的服务员说, 来一个汉堡,买汉堡的服务员就给顾客一个汉堡。
请为这个Use Case做出类图。
适用性:
当一个类(Factory)不知道它所必须创建的对象的类的时候(框架);
当一个类希望由它的子类来指定它所创建的对象的时候。
意图:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
使一个类的实例化延迟到Factory Method的子类。
public interface Product {
}
public class ConcreteProductA implements Product {
}
public class ConcreteProductB implements Product {
}
public interface Factory {
Product createProduct();
}
public class ConcreteFactoryA implements Factory {
public Product createProduct() {
return new ConcreteProductA();
}
}
public class ConcreteFactoryB implements Factory {
public Product createProduct() {
return new ConcreteProductB();
}
}