基本介绍:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
作用:
在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。用户只需要给出指定复杂对象的类型和内容, 建造者模式负责按顺序创建复杂对象.
package org.brando;
/**
*
* 类说明: 测试类
* @author Brando 2018年3月29日 下午2:03:59
*/
public class Launcher {
public static void main(String[] args) {
Director director = new Director();
ComputerBuilder builder = new BrandoComputerBuilder();
director.construct(builder);
Computer computer = builder.GetComputer();
computer.show();
}
}
package org.brando;
/**
*
* 类说明: 计算机类
* @author Brando 2018年4月11日 下午4:26:09
*/
public class Computer {
/**CPU**/
private String cpu;
/**主板**/
private String mainboard;
/**硬盘**/
private String hd;
public void show() {
System.out.println("CPU:" + cpu);
System.out.println("主板:" + mainboard);
System.out.println("硬盘:" + hd);
}
public String getCpu() {
return cpu;
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public String getMainboard() {
return mainboard;
}
public void setMainboard(String mainboard) {
this.mainboard = mainboard;
}
public String getHd() {
return hd;
}
public void setHd(String hd) {
this.hd = hd;
}
}
package org.brando;
/**
*
* 类说明: 计算机创建者抽象类.
* @author Brando 2018年4月11日 下午4:24:14
*/
public abstract class ComputerBuilder {
/**
*
* 方法说明: 创建CPU
* @author Brando 2018年4月11日 下午4:31:32
*/
public abstract void BuildCPU();
/**
*
* 方法说明: 创建主板
* @author Brando 2018年4月11日 下午4:31:41
*/
public abstract void BuildMainboard();
/**
*
* 方法说明: 创建硬盘
* @author Brando 2018年4月11日 下午4:31:49
*/
public abstract void BuildHD();
/**
*
* 方法说明: 获取计算机
* @author Brando 2018年4月11日 下午4:31:57
* @return
*/
public abstract Computer GetComputer();
}
package org.brando;
/**
*
* 类说明: 具体计算机建造者.
* @author Brando 2018年4月11日 下午4:32:45
*/
public class BrandoComputerBuilder extends ComputerBuilder {
/**计算机**/
private Computer computer = new Computer();
@Override
public void BuildCPU() {
computer.setCpu("Intel");
}
@Override
public void BuildMainboard() {
computer.setMainboard("华硕");
}
@Override
public void BuildHD() {
computer.setHd("金士顿");
}
@Override
public Computer GetComputer() {
return computer;
}
}
package org.brando;
/**
*
* 类说明: 导演类, 用于设置建造的构建方式
* @author Brando 2018年4月11日 下午4:23:22
*/
public class Director {
/**
*
* 方法说明: 建造计算机
* @author Brando 2018年4月11日 下午4:36:47
* @param builder
*/
public void construct(ComputerBuilder builder) {
builder.BuildCPU();
builder.BuildMainboard();
builder.BuildHD();
}
}