请MM吃饭之简单工厂实现

简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://dba10g.blog.51cto.com/764602/228768
最近,我突然之间喜欢上了某个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); 
  } 

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

本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/228768

相关文章
|
6月前
|
安全 Java 数据库连接
【Java每日一题】——第三十五题:一个父类Animal和两个子类Rabbit和Tiger描述动物世界的继承关系两个子类吃的行为各不相同(兔子吃草,老虎吃肉)但睡觉的行为是一致
【Java每日一题】——第三十五题:一个父类Animal和两个子类Rabbit和Tiger描述动物世界的继承关系两个子类吃的行为各不相同(兔子吃草,老虎吃肉)但睡觉的行为是一致
|
6月前
|
C++
【C++】类与对象(日期计算器)
【C++】类与对象(日期计算器)
38 0
不要一个人吃饭( Never Eat Alone)
人脉就是钱脉,培养人脉的100个技巧。。。 来源: 李欣的日志 成功的道路上,人脉比知识更重要。发展人际关系应当是你优先级最高的事。《不要一个人吃饭( Never Eat Alone)》一书介绍了21世纪的交际规则。
1403 0
|
设计模式 Go uml
简单工厂、工厂方法、抽象工厂模式详述(工厂模式用的好,加薪一定少不了)
简单工厂、工厂方法、抽象工厂模式详述(工厂模式用的好,加薪一定少不了)
194 0
简单工厂、工厂方法、抽象工厂模式详述(工厂模式用的好,加薪一定少不了)
|
XML 存储 JSON
第一天:创建型模式--工厂方法模式
第一天:创建型模式--工厂方法模式
100 0
|
设计模式 Python
第二天:创建型模式--抽象工厂模式
第二天:创建型模式--抽象工厂模式
107 0
|
设计模式 Python
第三天:创建型模式--建造者模式
第三天:创建型模式--建造者模式
102 0
|
Python
生活中的适配器模式——身高不够鞋来凑
适配器模式又叫变压器模式,也叫包装模式(Wrapper),它的核心思想是将一个对象经过包装或转换后使它符合指定的接口,使得调用方可以像使用这接口的一般对象一样使用它。这一思想,在我们生活中可谓是处处可见,比如变压器插座,能让你像使用国内电器一样使用美标(110V)电器;还有就是各种转接头,如MiniDP转HDMI转接头、HDMI转VGA线转换器、Micro USB转Type-C转接头等。
1701 0