一、目的
提供共同主题创建接口,无须指定具体的类。
二、 解释
比如要创建一个班级,需要班主任、需要老师、需要有学生。这里的班主任、老师、学生就是班级的共同主题,他们之间存在着依赖关系。
简单的讲,将一个或者多个有依赖的主题(工厂)组合在一起,而不指定他们具体类的工厂,就是抽象工厂模式,也即是工厂的工厂。
三、类关系图
IClassFactory 接口
班级创建工厂接口,提供创建班主任、教师、学生等方法。
ITeacher、IClassTeacher、 IStudent 接口类
教师、班主任、学生 接口类
MiddleSchoolFactory 类
初中班级工厂类,实现初中班级接口方法
HighSchoolFactory 类
高中班级工厂类, 实现高中班级的接口方法
四、总结
抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。
客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。
抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。