5.抽象工厂模式
一.概念
为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类
二.示例
场景:不同类型应用(社交类:QQ,wechat,游戏类:吃鸡,农药,视频类:优酷,腾讯视频),需要在n个平台(windows,linux,android,ios...)上运行(即:每个平台都要有这几种类型的不同应用),该如何设计?
1.定义抽象产品类(例如:社交类,游戏类,视频类):上图中的AbstractProduct
2.创建具体的产品(例如:QQ,微信...):上图中的ConcreteProduct
3.构建抽象工厂(可以是单个产品类(视频类)的工厂,也可以是多个产品类的工厂):上图中的AbstractFactory
4.创建具体的工厂(例如:windows,linux...):上图中的ConcreteFactory(这里实现抽象工厂的方法,例如创建视频类:windows版优酷,创建社交类windows版QQ)
三.与工厂方法的区别:
个人感觉:工厂方法主要是创建某个具体类而诞生,抽象工厂可以创建某个具体类,也可以创建某个组合类