java设计模式连载(3) --建造者模式
意图:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性:
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
- 当构造过程必须允许被构造的对象有不同的表示时。
实例:
1. 定义一个计算机构建者接口
package Builder_Pattern;
public interface ComputerBuilder {
public void buildDisplayer();
public void buildMainframe();
public void buildDataline();
public Computer buildComputer();
}
2. 定义一个通用计算机类
package Builder_Pattern;
public class Computer{
private String displayer;
private String mainframe;
private String dataline;
public String getDisplayer() {
return displayer;
}
public void setDisplayer(String displayer) {
this.displayer = displayer;
}
public String getMainframe() {
return mainframe;
}
public void setMainframe(String mainframe) {
this.mainframe = mainframe;
}
public String getDataline() {
return dataline;
}
public void setDataline(String dataline) {
this.dataline = dataline;
}
}
3. 定义一个主管,管理构建计算机的人
package Builder_Pattern;
public class ComputerDirector {
public Computer constructComputer(ComputerBuilder cb){
cb.buildDisplayer();
cb.buildMainframe();
cb.buildDataline();
return cb.buildComputer();
}
}
4. 定义一个PC机 ,继承通用计算机这个类。或者可以再定义大型计算机
package Builder_Pattern;
public class PC extends Computer{
}
5. 定义一个专门建造PC机的构造者
package Builder_Pattern;
public class PCBuilder implements ComputerBuilder {
private Computer computer;
public PCBuilder(){
computer = new PC();
}
@Override
public Computer buildComputer() {
return computer;
}
@Override
public void buildDataline() {
computer.setDataline("构建个人计算机数据线");
}
@Override
public void buildDisplayer() {
computer.setDisplayer("构建个人计算机显示器");
}
@Override
public void buildMainframe() {
computer.setMainframe("构建个人计算机主机");
}
}
6. 测试这个模式
package Builder_Pattern;
public class Test{
public static void main(String[] args) {
//实例化一个计算机构建者
ComputerDirector computerDirector = new ComputerDirector();
Computer computer = computerDirector.constructComputer( new PCBuilder());
System.out.println(computer.getDisplayer());
System.out.println(computer.getMainframe());
System.out.println(computer.getDataline());
}
}
7. 多谢浏览,欢迎斧正。