简述
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构 造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。
代码描述
- 手机类
public class Phone {
private Screen screen;
private Shell shell;
private Cpu cpu;
public Screen getScreen() {
return screen;
}
public void setScreen(Screen screen) {
this.screen = screen;
}
public Shell getShell() {
return shell;
}
public void setShell(Shell shell) {
this.shell = shell;
}
public Cpu getCpu() {
return cpu;
}
public void setCpu(Cpu cpu) {
this.cpu = cpu;
}
}
- 手机构成组件的三个类
public class Cpu {
private String cname;
public Cpu(String cname) {
this.cname = cname;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
}
public class Screen {
private String sname;
public Screen(String sname) {
this.sname = sname;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
public class Shell {
private String sname;
public Shell(String sname) {
this.sname = sname;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
- 建造者
public interface Builder {
Cpu createCpu(String name);
Screen createScreen(String name);
Shell createShell(String name);
}
public class PBuilder implements Builder {
@Override
public Cpu createCpu(String name) {
return new Cpu(name);
}
@Override
public Screen createScreen(String name) {
return new Screen(name);
}
@Override
public Shell createShell(String name) {
return new Shell(name);
}
}
- 工厂
public interface Factory {
Phone createPhone();
}
public class PhoneFactory implements Factory {
private Builder builder;
public PhoneFactory(Builder builder) {
this.builder = new PBuilder();
}
@Override
public Phone createPhone() {
Cpu cpu = builder.createCpu("麒麟9000");
Screen screen = builder.createScreen("三星OLED");
Shell shell = builder.createShell("P40外壳");
Phone p40 = new Phone();
p40.setCpu(cpu);
p40.setScreen(screen);
p40.setShell(shell);
return p40;
}
}