建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式结构图如下所示:
建造者模式基本代码:
public class Product {
List<String> parts = new ArrayList<String>();
public void Add(String part) {
parts.add(part);
}
public void Show() {
System.out.println("\n产品");
for (String part : parts) {
System.out.println(part);
}
}
}
abstract class Builder {
public abstract void buildPartA();
public abstract void buildPartB();
public abstract Product getResult();
}
class ConcreteBuilder extends Builder {
private Product product = new Product();
public void buildPartA() {
product.Add("部件A");
}
public void buildPartB() {
product.Add("部件B");
}
public Product getResult() {
return product;
}
}
class ConcreteBuilder2 extends Builder {
private Product product = new Product();
public void buildPartA() {
product.Add("部件X");
}
public void buildPartB() {
product.Add("部件Y");
}
public Product getResult() {
return product;
}
}
class Director{
public void Construct(Builder builder){
builder.buildPartA();
builder.buildPartB();
}
}
建造者就是封装了建造的过程,保证建造的完整性,把建造过程和表示分离开。建造者模式是在当创建算法对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。
案例是:比如游戏中建造人,人的建造不能缺胳膊少腿,建造出来可能分为胖子和瘦子。