建造者模式解决的是在属性较多时构造对象繁琐的问题。
public abstract class Product {
private String cpu;
private String memory;
private String DisplayCard;
protected List<String> parts = new ArrayList<>();
public void add(String part){
parts.add(part);
}
public String getCpu() {
return cpu;
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public String getMemory() {
return memory;
}
public void setMemory(String memory) {
this.memory = memory;
}
public String getDisplayCard() {
return DisplayCard;
}
public void setDisplayCard(String displayCard) {
DisplayCard = displayCard;
}
public void show(){
System.out.println("产品部件信息: ");
for (String part: parts) {
System.out.println(part + " \t");
}
}
}
public class AccProduct extends Product{
@Override
public void show(){
super.show();
}
}
构建器:
public interface Builder {
Builder buildCPU(String cpu);
Builder buildMemory(String Memory);
Builder buildDisplay(String Display);
Product build();
}
public class AcerBuilder extends AccProduct implements Builder{
AccProduct accProduct = new AccProduct();
@Override
public Builder buildCPU(String cpu) {
accProduct.setCpu(cpu);
System.out.println("acer " + cpu );
return this;
}
@Override
public Builder buildMemory(String Memory) {
System.out.println("acer " + Memory);
accProduct.setMemory(Memory);
return this;
}
@Override
public Builder buildDisplay(String Display) {
System.out.println("acer " + Display);
accProduct.setDisplayCard(Display);
return this;
}
@Override
public Product build() {
return accProduct;
}
}
测试代码:
public class Test {
public static void main(String[] args) {
Builder acbuilder = new AcerBuilder();
acbuilder.buildCPU("麒麟")
.buildDisplay("显示器")
.buildMemory("memory")
.build();
}
}
结果:
acer 麒麟
acer 显示器
acer memory