首页 新闻 会员 周边 捐助

《head first 设计模式》一书中关于简单工厂和工厂方法的疑惑

0
悬赏园豆:5 [已关闭问题]

文中先用简单工厂来创建了pizza,后来当Pizza店有了加盟店,并且需求发生变化时:

用简单工厂创建的话,就要创建创建NYPizzaFactory、ChicagoPizzaFactory、CaliforniaPizzaFactory等多个工厂:

Code


用工厂方法的话

Code

 

疑惑1:
 文中说当需求改变时,简单工厂将不能满足需求,可改变的需求包括:
 1)、有些加盟店采用自创的流程,比如烘烤的做法有些差异(Bake方法改变)、不要切片(Cut方法不要)、采用其他公司的盒子(Box方法改变)等。
 2)、Pizza的种类有可能发生改变(或增加或减少)。

 我觉得这些改变都是在Pizza类内部发生的,如
 pizza.Prepare();
 pizza.Bake();
 pizza.Cut();
 pizza.Box();
 可以在具体的pizza类中修改来实现,和采用哪种工厂没有什么关系吧?
疑惑2:
 采用简单工厂时要创建具体的工厂:如 NYPizzaFactory nyFactory = new NYPizzaFactory();
 采用工厂方法时也还是要创建具体的Pizza店,如:PizzaStore nyStore = new NYPizzaStore();
 如果要增加加盟店,简单工厂需要增加一个具体的工厂,而工厂方法也需要增加一个具体的pizza店,客户端也还是要做相应的修改,看上去工厂方法比简单工厂好不了多少呀?

Ryanism的主页 Ryanism | 初学一级 | 园豆:39
提问于:2009-06-24 10:07
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册