@Tyhj
        
        2018-09-06T02:38:37.000000Z
        字数 1666
        阅读 1336
    设计模式
建造者模式也被称为生成器模式,它是创建一个复杂对象的创建型模式,其将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

建造者模式的角色:
- Director:导演类,负责安排已有模块的顺序,然后通知Builder开始建造。
 - Builder:抽象Builder类,规范产品的组建,一般由子类实现。
 - ConcreteBulider:具体建造者,实现抽象Builder类定义的所有方法,并且返回一个组建好的对象。
 - Product:产品类
 
创建产品类: 
DIY组装计算机例子,计算机有三个部件:CPU、主板、内存,并在里面提供了3个方法分别用来设置CPU、主板和内存:
public class Computer {private String CPU;private String mMainboard;private String mRam;public void setCPU(String CPU) {this.CPU = CPU;}public void setmMainboard(String mMainboard) {this.mMainboard = mMainboard;}public void setmRam(String mRam) {this.mRam = mRam;}}
创建Builder类规范产品的组建 
有一套组建计算机方法的模板,是一个抽象类Builder类,提供了安装部件和组成计算机的方法:
public abstract class Builder {public abstract void buildCpu(String cpu);public abstract void buildMainboard(String minaboard);public abstract void buildRam(String ram);public abstract Computer create();}
实现抽象的Builder类,MoonComputerBuilder类用于组装计算机:
public class MoonComputerBuilder extends Builder {private Computer computer = new Computer();@Overridepublic void buildCpu(String cpu) {computer.setCPU(cpu);}@Overridepublic void buildMainboard(String minaboard) {computer.setmMainboard(minaboard);}@Overridepublic void buildRam(String ram) {computer.setmRam(ram);}@Overridepublic Computer create() {return computer;}}
用导演类来同一组装过程
public class Direcror {private String CPU;private String mMainboard;private String mRam;public void setCPU(String CPU) {this.CPU = CPU;}public void setmMainboard(String mMainboard) {this.mMainboard = mMainboard;}public void setmRam(String mRam) {this.mRam = mRam;}}
代码调用
public class CreateComputer{public static void main(String args[]){Builder builder=new MoonComputerBuilder();Direcror direcror=new Direcror(builder);direcror.createComputer("i7-7700k","华硕主板","三星 DDR4");}}
