`
hkme
  • 浏览: 138844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

2 :Factory Method

阅读更多

当需要把实例化的任务推迟到其子类来完成时,适用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();
 }

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics