工厂模式
SimpleFactory(简单工厂、做静态工厂方法)
描述
是指由一个工厂对象决定创建出哪一种产品类 的实例。
场景
适用 于工厂类负责创建的对象较少的场景 且客户端只需要传入工厂类的参数,对于如何创 建对象的逻辑不需要关心
优点
根据不同的情景(参数)创建不同的对象
缺点
工厂类的职业相对过重,增加新的产品时需要修改工厂类的判断逻辑,违背开闭原则。 不易于扩展过于复杂的产品结构。
经典应用
Calendar
理解
产品统一接口,工厂根据需求产出需要的接口实现类
图解
FatoryMethod(工厂方法模式)
描述
1.指定一个创建对象的接口 2.让实现这个接口的类来决定实例化哪个类 3.让类的实例化推迟到子类中
场景
创建对象需要大量重复代码 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节。工厂接口过其实现类来决定创建那个产品。
优点
只需关心产品对应的工厂 ,调用统一的接口 加入新工厂符合开闭原则,提高了系统可扩展性
缺点
类会变多 增加系统理解抽象难度
经典应用
LoggerFactory
理解
生产某类产品对应的一种,不是通过在工厂生产方法中输入参数,然后经过方法体各种逻辑判断获得产品。是将生产抽象成接口,不同的实现类实现对应品种的产品生产。客户方只要选择工厂调用统一的接口。这样就符合了开闭原则。
AbstractFactory(抽象工厂模式)
描述
是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。 抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。
场景
1.不依赖于创建细节 2.一系列相关产品(平行或依赖)放在一起,不需要单一的工厂而造成大量重复代码 3.一个产品类库,接口统一,不依赖于实现,便于切换即解耦
优点
应用层代码隔离无需关心创建细节 统一产品族,省代码
缺点
扩展产品困难、增加理解难度
经典应用
Pool
理解
一个业务场景下有一些固定的套路或者说组件,调用者需要用到这一套组件,逻辑清晰,且由于组件基于统一的接口,达到了解耦的目的。
图解
其他
IDEA
类图工具 快捷键 Ctrl+Shift+Alt+U 通过 快捷键[空格]添加其他关联类
\