建造者模式UML类图
建造者模式应用场景
建造者模式更关注零件的组成顺序,它通常用来构建复杂的对象,并构建对象应独立它的装配方式时。如UML类图中的Director专门来维护构建顺序,Builder为对象的构造者,将需构建对象的各个组件独立成一个方法,Director按一定顺序构造Product。
建造者模式的实现
1、Product(复杂对象)
import java.util.ArrayList;
import java.util.List;
public class Product {
private List<String> list = new ArrayList<String>();
public void add(String part){
list.add(part);
}
public void show(){
for (String string : list) {
System.out.println(string);
}
}
}
2、建造者抽象接口
public interface Builder {
public void buildPart1();
public void buildPart2();
public Product getResult();
}
3、具体建造者
public class ConcreteBuilder implements Builder {
private Product product = new Product();
@Override
public void buildPart1() {
product.add("部件1");
}
@Override
public void buildPart2() {
product.add("部件2");
}
@Override
public Product getResult() {
return this.product;
}
}
4、指挥者,用来指挥建造顺序
public class Director {
public void construct(Builder builder){
builder.buildPart1();
builder.buildPart2();
}
}
5、Main客户端
public class Main {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director();
director.construct(builder); //在内部构造,不需要暴露给客户端
Product product = builder.getResult();
product.show();
}
}
输出结果:
部件1
部件2