抽象工厂模式-《Head First设计模式》

抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么,这样,客户就从具体的产品被解耦了。类图如下




工厂方法和抽象工厂的区别:
工厂方法使用的是继承,意味着利用工厂方法创建对象,需要扩展一个类,并覆盖它的工厂方法。这个工厂方法就是用来创建对象的。该模式就是通过子类来创建对象,用这种做法,客户只需要知道他们所使用的抽象类型就可以了,而由子类来负责决定具体类型,即只负责客户从具体类型中解耦。
抽象工厂通过对象组合来实现。它提供一个用来创建一个产品家族的抽象类型,这个类型的子类定义了产品被产生的方法。要想使用这个工厂,必须先实例化它,然后将它传入一些针对抽象类型所写的代码中。它经常使用工厂方法来实现具体工厂。

工厂方法使用继承,把对象的创建委托给子类,子类实现工厂方法来创建对象。
抽象工厂使用对象组合,对象的创建被是现在工厂接口所暴露出来的方法中。
工厂方法允许类将实例化延迟到子类。
抽象工厂创建相关的对象家族,而不需要依赖它们的具体类

猜你喜欢

转载自xuzhike.iteye.com/blog/1068939