模式定义
抽象工厂模式(AbstractFactory Pattern)提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类。抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。
肯德基事例:
各自对应的角色如下所示:
肯德基店—生产食物的工厂
食物(麻辣鸡腿汉堡、奥尔良烤鸡翅、薯条、可乐)—工厂生产的产品
爸爸、儿子—客户
以上三种角色的关系如图
对图进行抽象化改进,如图所示
设计原则
1.多用对象组合,少用继承
2.针对抽象编程,不针对实现编程
3.产品对象通过工厂暴露的方法创建
使用场合
(1)创建产品家族,相关产品集合在一起使用的时候;
(2)想要提供一个产品类库,并只想显示其接口而不是实现时;
(3)通过组合的方式使用工厂时.