Builder 模式定义

Builder 模式中文叫作建造者模式,又叫生成器模式,它属于对象创建型模式,是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。下图是建造者模式的通用类图:
建造者模式UML图
在建造者模式中,有如下4种角色:

  • Product:产品角色
  • Builder:抽象建造者,定义产品接口
  • ConcreteBuilder:具体建造者,实现Builder定义的接口,并且返回组装好的产品
  • Director:指挥者,属于这里面的老大,你需要生产什么产品都直接找它。

建造者模式应用举例

家装

家装不管是精装还是简装,它的流程都相对固定,所以它适用于建造者模式。我们就以家装为例,一起来学习了解一下建造者模式。下图是家装建造者模式简单的 UML 图。

家装建造者模式简单的 UML 图

1、家装对象类

/**  * 家装对象类  */ public class House {     // 买家电     private String jiadian;      // 买地板     private String diban;     // 买油漆     private String youqi;      public String getJiadian() {         return jiadian;     }      public void setJiadian(String jiadian) {         this.jiadian = jiadian;     }      public String getDiban() {         return diban;     }      public void setDiban(String diban) {         this.diban = diban;     }      public String getYouqi() {         return youqi;     }      public void setYouqi(String youqi) {         this.youqi = youqi;     }      @Override     public String toString() {         return "House{" +                 "jiadian='" + jiadian + '\'' +                 ", diban='" + diban + '\'' +                 ", youqi='" + youqi + '\'' +                 '}';     } }

2、抽象建造者 Builder 类

/**  * 抽象建造者  */ public interface HouseBuilder {     // 买家电     void doJiadian();     // 买地板     void doDiBan();     // 买油漆     void doYouqi();      House getHouse(); }

3、具体建造者-简装建造者类

/**  * 简装创建者  */ public class JianzhuangBuilder implements HouseBuilder {      private House house = new House();      @Override     public void doJiadian