抽象工厂模式
定义
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
类图
AbstractProduct(抽象产品)
负责定义AbstractFactory角色所生成的抽象零件和产品的接口
AbstractFactory(抽象工厂)
负责定义用于生成抽象产品的接口的接口
ConcreteProduct(具体产品)
负责实现AbstractProduct角色的接口
ConcreteFactory(具体工厂)
负责实现AbstractFactory角色的接口
示例
类图
Item
1 | public abstract class Item { |
Link
1 | public abstract class Link extends Item { |
Tray
1 | public abstract class Tray extends Item { |
Page
1 | public abstract class Page { |
Factory
1 | public abstract class Factory { |
ListLink
1 | public class ListLink extends Link { |
ListTray
1 | public class ListTray extends Tray { |
ListPage
1 | public class ListPage extends Page { |
ListFactory
1 | public class ListFactory extends Factory { |
Main
1 | public class Main { |
总结
在抽象工厂模式中增加具体的工厂是非常容易的。假设我们要在示例程序中增加新的具体工厂,那么需要做的就是编写Factory、Link、Tray、Page这4个类的子类,并实现它们定义的抽象方法。
但是要增加新的零件是比较困难的。如果要增加一个Picture零件的话,需要对所有具体工厂进行修改才行。已经完成的具体工厂类越多,修改的工作量就越大