理解
在我的理解之中呢,我觉得,这个建造者模式也是一个分工了得模式,首先是接口,然后是在这个接口,或者可以用一个抽象类来定义,这个抽象类呢可以写上一些固定的方法,然后在这些方法当中,通过一个实现类来进行定义,实现类可以对这个方法进行编写和实现,通过将这些方法一些定义好了之后,再通过创建一个类当中的方法,来对这些方法进行一个调用,这样就完成了。
应用
首先下面要介绍的是一个关于computer电脑产品的推出,推出的过程当中,包括
这个其实很简单
Computer代码
public abstract class Computer {
private String type;//建立对应的版本
private String cpu;
private String ram;//内存
private String hardDisk;//硬盘
public String getType() {
return type;
}
public String getCpu() {
return cpu;
}
public String getRam() {
return ram;
}
public String getHardDisk() {
return hardDisk;
}
public void setType(String type) {
this.type = type;
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public void setRam(String ram) {
this.ram = ram;
}
public void setHardDisk(String hardDisk) {
this.hardDisk = hardDisk;
}
}
X201(电脑类型)
public class X201 extends Computer{
public X201(){
this.setType("联想小新时代i5");
}
public String toString(){
return "型号:\t"+this.getType()+"\ncpu:\t"+this.getCpu()+ "\n内存:\t" + this.getRam() +
"\n硬盘:\t" + this.getHardDisk();
}
}
ComputerBuilder接口
public interface ComputerBuilder {
void buildCpu();
void buildRam();
void buildHardDisk();
}
建立对应的实现类
T201Builder.java
public class X201Builder implements ComputerBuilder{
private X201 computer=new X201();
@Override
public void buildCpu() {
computer.setCpu("i5-2019");
}
@Override
public void buildRam() {
computer.setRam("4GB 1333MHZ");
}
@Override
public void buildHardDisk() {
computer.setHardDisk("500GB 7200转");
}
}
接下来,我们这些产品的设计方法也都建立好了,下面做的就是增加一个导演者,来将这些代码进行一个封装,这个封装就是说对已有模块进行封装
ComputerDirector
public class ComputerDirector {
ComputerBuilder builder;
public X201 constructX201(){
builder=new X201Builder();
builder.buildCpu();
builder.buildRam();
builder.buildHardDisk();
return (X201)builder.getResult();
}
}
测试Test类
public class Test {
public static void main(String[] args) {
ComputerDirector director=new ComputerDirector();
Computer X201=director.constructX201();
System.out.println(X201);
}
}