生成器模式(建造者模式、Builder)
通常用于构建相对比较复杂的对象,例如:
- 构建过程复杂(除了复杂很多过程又重复比较多)
- 对象依赖关系复杂
应用场景分析
- Mybatis(XmlConfigBuilder,XmlStatementBuilder)
- Spring(XmlBeanDefinitionReader)
- 。。。
一般情况下经常用于 基于配置文件xml(或注解annotation)构建对象
对象角色分析
- 抽象建造者角色(Builder):可能是接口,也可能是抽象类,可以省略
- 具体建造者角色(ConcreteBuilder):XmlConfigBuilder
- 导演角色(Director):持有建造者对象,可以省略
- 抽象产品角色(Product):可以省略
- 具体产品角色(ConcreteProduct)
应用分析
- 优势:解耦对象的应用以及对象创建,通过建造者创建复杂产品对象,尤其是基于配置文件创建对象的场景。
- 劣势:要创建的对象结构假如频繁变化可能导致创建者对象的设计比较复杂