package com.yf.model;
public abstract class Builder {
public abstract void buildCPU();
public abstract void buildMainBoard();
public abstract void buildHD();
public abstract Computer getComputer();
}
package com.yf.model;
import java.util.ArrayList;
import java.util.List;
public class Computer {
private List<String> parts=new ArrayList<String>();
public void add(String part){
parts.add(part);
}
public void show(){
for(int i=0;i<parts.size();i++){
System.out.println("组件"+parts.get(i)+"装好了");
}
System.out.println("电脑组装完毕");
}
}
package com.yf.model;
public class ConcreteBuilder extends Builder{
Computer computer=new Computer();
@Override
public void buildCPU() {
computer.add("cpu");
}
@Override
public void buildMainBoard() {
computer.add("mainBoard");
}
@Override
public void buildHD() {
computer.add("hd");
}
@Override
public Computer getComputer() {
// TODO Auto-generated method stub
return computer;
}
}
package com.yf.model;
public class Director {
public void Construct(Builder builder){
builder.buildCPU();
builder.buildHD();
builder.buildMainBoard();
}
}
package com.yf.model;
public class testMain {
public static void main(String[] args){
/*Builder builder=new ConcreteBuilder();
builder.buildCPU();
builder.buildHD();
builder.buildMainBoard();
Computer c=builder.getComputer();
c.show();*/
Director d=new Director();
Builder builder=new ConcreteBuilder();
d.Construct(builder);
Computer c=builder.getComputer();
c.show();
}
}
每次看设计模式都有不一样的收获。
每个类只做好自己的事情。
建造者模式更加关注于零件装配的顺序。