请MM吃饭之简单工厂实现

简介:
最近,我突然之间喜欢上了某个MM,通过红军过草地的毅力,和顽强的意志,我终于得到了很MM共进晚餐的机会。我们约定在麦当劳见面。下面使我们见面的过程。
晚餐很简单,我们只吃了点鸡翅,和可乐。原因麦当劳太差劲了,他们只提供鸡翅和可乐,结果MM 饿着肚子陪我说了会话,就走了,结果只有一个,我被甩了。
 
下面是实现源码:
package simplefactory; 
/* 
* 食物接口 
*/
 
public  interface Food { 

   public  void desc(); 

 
具体产品角色:
工厂创建的对象都是这个角色的实例
 
package simplefactory; 

public  class Cocacola  implements Food{ 

   public  void desc() { 
     
    System.out.println( "可口可乐,酸酸甜甜就是我"); 
     
  } 


 
package simplefactory; 
/* 
* 鸡翅类 
*/
 
public  class ChickenWing  implements Food { 
   public  void desc(){ 
    System.out.println( "鸡翅香酥可口,跟老太太的裤腰似的"); 
  } 

 
3.工厂类
创建具体产品
package simplefactory; 

public  class Mcdonald { 

   public  static Food factory(String type)  throws BadFoodException{ 
    Food    food =  null
     if(type.equalsIgnoreCase( "chickenwing")){ 
      food =  new ChickenWing(); 
    } else  if(type.equalsIgnoreCase( "cocacola")){ 
      food =  new Cocacola(); 
    } else
       throw  new BadFoodException( "本店没有该食品,请核实");    
    } 
     return food; 
  } 

 
4.辅助类
package simplefactory; 

public  class BadFoodException  extends Exception { 

   public BadFoodException(String msg){ 
     super(msg); 
  } 

 
优点:
客户免除直接创建产品对象了。我直接说“来份鸡翅”就可以了
缺点:
工厂负责这个创建逻辑。比如,我有什么请求,都得向他请示,询问有他们有什么东西,没有什么东西。
工厂类可能需要判断什么时候创建某种产品。
 
开闭原则:不符合,如果新添加了个食物,还要修改工厂,比如麦当劳的若干设施,代价太高了。



本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/228768,如需转载请自行联系原作者
相关文章
|
6月前
|
安全 Java 数据库连接
【Java每日一题】——第三十五题:一个父类Animal和两个子类Rabbit和Tiger描述动物世界的继承关系两个子类吃的行为各不相同(兔子吃草,老虎吃肉)但睡觉的行为是一致
【Java每日一题】——第三十五题:一个父类Animal和两个子类Rabbit和Tiger描述动物世界的继承关系两个子类吃的行为各不相同(兔子吃草,老虎吃肉)但睡觉的行为是一致
不要一个人吃饭( Never Eat Alone)
人脉就是钱脉,培养人脉的100个技巧。。。 来源: 李欣的日志 成功的道路上,人脉比知识更重要。发展人际关系应当是你优先级最高的事。《不要一个人吃饭( Never Eat Alone)》一书介绍了21世纪的交际规则。
1392 0
|
设计模式 Java
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(二)
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(二)
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(二)
|
XML 存储 JSON
第一天:创建型模式--工厂方法模式
第一天:创建型模式--工厂方法模式
98 0
|
设计模式 Python
第二天:创建型模式--抽象工厂模式
第二天:创建型模式--抽象工厂模式
106 0