工厂模式实质上包含两种不同的设计模式:工厂方法和抽象工厂。但他们本质上都是对创建对象进行封装,从而实现某种程度上的解耦的设计模式,所以放在一起进行介绍。
和《Head First 设计模式》不同,这里采用汉堡店的例子进行说明,因为我没吃过几次披萨,对披萨的种类知之甚少,所以就不用披萨店作为例子,但本质上两者除了名称没有根本上的区别。
假设我们要开一家汉堡店,并提供多种汉堡可供顾客点餐,最初的设计可能是这样的:
HamburgStore
是我们的汉堡店,通过orderHamburg
方法可以点餐,具体的汉堡类有:
- 具体的汉堡英文我参考了网上找到的一个肯德基外卖菜单,感兴趣的可以自行查看完整菜单。
- 原来田园鸡腿堡叫Mini…
- 我最喜欢的是新奥尔良鸡腿堡