一:定义
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
简单的说:工厂设计模式的工厂是生产一个产品,抽象工厂设计模式是为了生产一组相关的产品。
二:UML图
三:简单代码实现
四:适用场景
1、创建数据库查询sql类,不通数据库的查询sql不一样,测试建立数据库对应的查询类,每个查询类对应查询库中所有数据。
2、 QQ 换皮肤,一整套一起换。
3、生成不同操作系统的程序。
注意事项:产品族难扩展,产品等级易扩展。
五:优点
1.可以确保同一工厂生成的产品相互匹配。
2.可以避免客户端和具体产品代码的耦合。
3.单一职责原则。 你可以将产品生成代码抽取到同一位置, 使得代码易于维护。
4.开闭原则。 向应用程序中引入新产品变体时, 你无需修改客户端代码。
六:缺点
由于采用该模式需要向应用中引入众多接口和类, 代码可能会比之前更加复杂。