建造者模式
大约 1 分钟
相关信息
建造者模式主要用于构建复杂对象。通过将对象的构建过程与其表示分离,使得相同的构建过程可以创建不同的表示。
何时使用
构建复杂对象:当一个对象的构建过程非常复杂,包含多个参数或步骤时,建造者模式可以简化代码。
需要多个表示:当需要根据不同的需求生成不同的对象表示时,使用建造者模式可以灵活适应变化。
对象的创建过程与表示解耦:当想要创建和使用不同类型的对象时,可以使用建造者模式来确保创建过程不影响对象的使用。
需要逐步构建:当构建对象需要多个步骤,且这些步骤可能会有不同的顺序或组合时,建造者模式可以提供良好的控制。
示例
/**
* 产品类
*/
class Product {
private String partA;
private String partB;
public void setPartA(String partA) {
this.partA = partA;
}
public void setPartB(String partB) {
this.partB = partB;
}
@Override
public String toString() {
return "Product with PartA: " + partA + ", PartB: " + partB;
}
}
/**
* 建造者接口
*/
interface Builder {
void buildPartA();
void buildPartB();
Product getResult();
}
/**
* 具体建造者
*/
class ConcreteBuilder implements Builder {
private Product product = new Product();
@Override
public void buildPartA() {
product.setPartA("A1");
}
@Override
public void buildPartB() {
product.setPartB("B1");
}
@Override
public Product getResult() {
return product;
}
}
// 指挥者
class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct() {
builder.buildPartA();
builder.buildPartB();
}
}
/**
* 客户端
*/
public class BuilderPatternExample {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.getResult();
System.out.println(product);
}
}