顿搜
飞过闲红千叶,夕岸在哪
类目归类
在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
建造模式是对象的创建模式。建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
建造模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件,从而建造出完整的对象。建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割开来,达到责任划分和封装的目的。
创建者模涉及“导演者(Director)”,“抽象建造者(Builder)”,“具体建造者(ConcreteBuilder)”,“具体产品(Product)”
//产品
public class Computer{
private String cpu;
private String memory;
private String disk;
public void setCpu(String cpu) {
this.cpu= cpu;
}
public void setMemory(String memory) {
this.memory= memory;
}
public void setDisk(String disk) {
this.disk= disk;
}
public String getCpu() {
return cpu;
}
public String getMemory() {
return memory;
}
public String getDisk() {
return disk;
}
}
//联想产品
public class Lenovo extends Computer{ }//抽象建造者
public interface Builder {
void buildCpu();
void buildMemory();
void buildDisk();
Computer buildComputer();
}//具体建造者
public class LenovoBuilder implements Builder {
Computer computer;
public LenovoBuilder() {
computer= new Lenovo();
}
@Override
public void buildCpu() {
computer.setCpu("build cpu");
}
public void buildMemory() {
computer.setMemory("build memory");
}
public void buildDisk() {
computer.setDisk("build Disk");
}
public Computer buildComputer() {
return computer;
}
}//导演者
public class ComputerDirector {
public Computer constructComputer(Builder cb) {
cb.buildCpu();
cb.buildMemory();
cb.buildDIsk();
return cb.buildComputer();
}
}//测试
public class Test {
public static void main(String[] args) {
ComputerDirector cd = new ComputerDirector();
Computer computer= cd.constructComputer(new LenovoBuilder());
System.out.println(computer.getCpu());
System.out.println(computer.getMemory());
System.out.println(computer.getDisk());
}
}