5.建造者模式

  • 一、角色
    • Product(产品角色):具体的产品对象
    • Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口
    • ConcreteBuilder(具体建造者):实现抽象接口,构建和装配各个部件
    • Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程
  • 二、适用场景
    • 隔离复杂对象的创建和使用,相同的方法,不同执行顺序,产生不同事件结果
    • 多个部件都可以装配到一个对象中,但产生的运行结果不相同
    • 产品类非常复杂或者产品类因为调用顺序不同而产生不同作用
    • 初始化一个对象时,参数过多,或者很多参数具有默认值
    • Builder模式不适合创建差异性很大的产品类,产品内部变化复杂,会导致需要定义很多具体建造者类实现变化,增加项目中类的数量,增加系统的理解难度和运行成本
    • 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性
  • 三、实例
    • 图-1中的Meal是产品角色,MealBuilder是抽象建造者角色,MealA和MealB是具体建造者角色,KFCWaiter是指挥者角色,这是一个生成肯德基套餐产品的实例,KFCWaiter依赖抽象建造者实现不同套餐产品对象生成,KFCWaiter实例注入不同的具体建造者实现不同套餐产品实例的生成
    • 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/builder
    图-1
原文地址:https://www.cnblogs.com/zhongj/p/11245745.html