首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

《Head.First设计方式》的学习笔记(6)--抽象工厂模式

2012-09-19 
《Head.First设计模式》的学习笔记(6)--抽象工厂模式?意图:提供一个接口,用于创建相关或依赖对象的家族,而不

《Head.First设计模式》的学习笔记(6)--抽象工厂模式



?意图:
提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

结构:

《Head.First设计方式》的学习笔记(6)--抽象工厂模式

实例:还是以Pizza店为例,现在pizza需要进行需要不同的原料,例如添加cheese,sauce等原料,重新扩展的pizza为:

?

?

?然后我们定义一个抽象工厂PizzaIngredientFactory:

?

最后我们来看这个纽约的pizza店,怎么用纽约的原料工厂创建出具有纽约风味的cheese的pizza:


?
?抽象工厂和工厂方法的一些联系:

1.工厂方法潜伏在抽象工厂模式之下,例如上面我们说的createDough(),createSource()方法,这些其实都在被继承的时候,然后来实现实例化的。

2.抽象工厂和工厂方法都是创建对象,工厂方法是“继承”(把对象的创建委托给子类,子类实现工厂方法来创建对象),抽象工厂通过对象的组合(对象的创建被实现在工厂接口暴露出来的方法中),抽象工厂产品家族和想让制造的相关的产品集合起来,而工厂方法可以让实例通过子类进行决定。

3.提醒我们随时要针对接口编程,而不是对实现编程。

缺点:

如果要增加相应的产品,相应的继承子类也要进行修改。繁琐。

?

?

热点排行