@Tyhj
2018-09-06T10:38:37.000000Z
字数 1666
阅读 1064
设计模式
建造者模式也被称为生成器模式,它是创建一个复杂对象的创建型模式,其将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
建造者模式的角色:
- 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();
@Override
public void buildCpu(String cpu) {
computer.setCPU(cpu);
}
@Override
public void buildMainboard(String minaboard) {
computer.setmMainboard(minaboard);
}
@Override
public void buildRam(String ram) {
computer.setmRam(ram);
}
@Override
public 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");
}
}