📅  最后修改于: 2023-12-03 14:42:57.328000             🧑  作者: Mango
在软件工程中,建造者模式是一种创建型设计模式,它可以用来构造复杂对象。
建造者模式是对象创建型模式的一种,它可以将一个复杂对象的创建过程和表示分离,使得同样的创建过程可以构建不同的表示。它简化了复杂对象的创建过程,并且使得客户端不必知道复杂对象的内部实现。
建造者模式包含以下角色:
以下是一个简单的建造者模式示例代码:
/**
* 产品类
*/
class Product {
private String part1;
private String part2;
private String part3;
public void setPart1(String part1) {
this.part1 = part1;
}
public void setPart2(String part2) {
this.part2 = part2;
}
public void setPart3(String part3) {
this.part3 = part3;
}
@Override
public String toString() {
return "Product{" +
"part1='" + part1 + '\'' +
", part2='" + part2 + '\'' +
", part3='" + part3 + '\'' +
'}';
}
}
/**
* 抽象建造者类
*/
abstract class Builder {
Product product = new Product();
public abstract void buildPart1();
public abstract void buildPart2();
public abstract void buildPart3();
public Product getResult() {
return product;
}
}
/**
* 具体建造者类
*/
class ConcreteBuilder extends Builder {
@Override
public void buildPart1() {
product.setPart1("Part1");
}
@Override
public void buildPart2() {
product.setPart2("Part2");
}
@Override
public void buildPart3() {
product.setPart3("Part3");
}
}
/**
* 指挥者类
*/
class Director {
public void construct(Builder builder) {
builder.buildPart1();
builder.buildPart2();
builder.buildPart3();
}
}
/**
* 客户端类
*/
public class Client {
public static void main(String[] args) {
Director director = new Director();
Builder builder = new ConcreteBuilder();
director.construct(builder);
Product product = builder.getResult();
System.out.println(product);
}
}
在上述示例代码中,Product是具体的产品类,Builder是抽象建造者类,ConcreteBuilder是具体建造者类,Director是指挥者类,Client是客户端类。在客户端类中,通过指挥者类调用具体建造者类的方法来构建产品。最后通过调用具体建造者类的getResult()方法获取构建完成的产品。
建造者模式可以使对象的构建过程更加灵活,也可以隐藏产品的内部细节,使得客户端不必知道产品的内部实现。在实际开发中,建造者模式可以用于构建复杂的对象,比如多个步骤的表单、多模块的菜单等。