抽象工厂将抽象零件组装为抽象产品。
示例
将带有层次关系的链接的集合制作成HTML文件。
类图
Item类
1 | package factory; |
Link类
1 | package factory; |
Tray类
1 | package factory; |
Page类
1 | package factory; |
Factory类
1 | package factory; |
Main类
1 | import factory.Factory; |
ListFactory类
1 | package listfactory; |
ListLink类
1 | package listfactory; |
ListTray类
1 | package listfactory; |
ListPage类
1 | package listfactory; |
运行结果
1 | <html><head><title>LinkPage</title></head> |
TableFactory类
1 | package tablefactory; |
TableLink类
1 | package tablefactory; |
TableTray类
1 | package tablefactory; |
TablePage类
1 | package tablefactory; |
运行结果
1 | <html><head><title>LinkPage</title></head> |
登场角色
AbstractProduct(抽象产品)
AbstractProduct角色负责定义AbstractFactory角色所产生的抽象零件和产品的接口(API)。在示例程序中,由Link类、Tray类和Page类扮演此角色。
AbstractFactory(抽象工厂)
AbstractFactory角色负责定义用于生成抽象产品的接口(API)。在示例程序中,由Factory类扮演此角色。
Client(委托者)
Client角色仅会调用AbstractFactory角色和AbstractProduct角色的接口(API)来进行工作,对于具体的零件、产品和工厂一无所知。在示例程序中,由Main类扮演此角色。
ConcreteProduct(具体产品)
ConcreteProduct角色负责实现AbstractProduct角色的接口(API)。在示例程序中,由以下包中的以下类扮演此角色:
- listfactory包:ListLink类、ListTray类和ListPage类
- tablefactory包:TableLink类、TableTray类和TablePage类
ConcreteFactory(具体工厂)
ConcreteFactory角色负责实现AbstractFactory角色的接口(API)。在示例程序中,由以下包中的以下类扮演此角色:
- listfactory包:ListFactory类
- tablefactory包:TableFactory类