ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

设计模式——建造者模式

2026/9/16 13:01:26 拓冰建站 浏览量
设计模式——建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,它允许通过分步骤来构建复杂对象。该模式的核心原理是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现形式。

原理

在建造者模式中,通常有以下角色:

  • 抽象建造者(Builder): 定义了创建产品对象的各个部分的接口,并定义了组装产品的具体方法。
  • 具体建造者(ConcreteBuilder): 实现了抽象建造者接口,构造和装配各个部件以创建最终的产品对象。
  • 产品(Product): 是被构建的复杂对象,包含多个可配置的部分。
  • 导演者(Director,可选): 负责协调建造者的工作流程,调用建造者的相关方法来一步步完成产品的构建。

Java代码示例

// 抽象产品类
public abstract class Computer {protected String motherboard;protected String cpu;protected String memory;// 其他属性和方法...public abstract void buildMotherboard(String motherboard);public abstract void buildCpu(String cpu);public abstract void buildMemory(String memory);public abstract Computer getComputer();
}// 具体产品类
public class DesktopComputer extends Computer {@Overridepublic void buildMotherboard(String motherboard) {this.motherboard = motherboard;}@Overridepublic void buildCpu(String cpu) {this.cpu = cpu;}@Overridepublic void buildMemory(String memory) {this.memory = memory;}@Overridepublic Computer getComputer() {return this;}
}// 抽象建造者类
public abstract class ComputerBuilder {protected Computer computer;public ComputerBuilder() {computer = new DesktopComputer(); // 或其他实现类}public abstract void buildMotherboard();public abstract void buildCpu();public abstract void buildMemory();public Computer getComputer() {return computer;}
}// 具体建造者类
public class HighEndDesktopBuilder extends ComputerBuilder {@Overridepublic void buildMotherboard() {computer.buildMotherboard("High End Motherboard");}@Overridepublic void buildCpu() {computer.buildCpu("Intel Core i9");}@Overridepublic void buildMemory() {computer.buildMemory("64GB RAM");}
}// 导演者类(可选)
public class Director {private ComputerBuilder builder;public Director(ComputerBuilder builder) {this.builder = builder;}public Computer constructComputer() {builder.buildMotherboard();builder.buildCpu();builder.buildMemory();return builder.getComputer();}
}// 使用示例
public class Client {public static void main(String[] args) {ComputerBuilder builder = new HighEndDesktopBuilder();Director director = new Director(builder);Computer highEndPC = director.constructComputer();System.out.println(highEndPC);}
}

想象你正在经营一家电脑装配店,客户可以选择定制自己的台式机。抽象建造者就像是一个装配说明书,列出了装机的所有步骤;具体建造者则按照说明书中每一步骤去实际安装主板、CPU和内存等配件;而导演者则是根据客户的订单要求,指挥建造者按正确的顺序进行装配。最后得到的就是一台完全符合客户需求的定制化台式电脑。

应用场景

  • 复杂对象的构建:当一个对象具有多个属性,且不同属性之间有不同的组合方式时,使用建造者模式可以灵活地控制创建过程。
  • 需要生成不同结构或内容的对象系列:例如创建XML或JSON文档,或者创建不同配置选项的产品等。
  • 需要解耦构造过程与表示过程:在不暴露内部细节的情况下,能独立改变产品的内部结构。

适用性

  • 当一个对象的构建过程非常复杂,需要许多步骤并且各步骤间有一定的顺序关系时。
  • 当希望用户只关注结果,而不关心构建过程以及具体的实现细节时。
  • 当需要为对象的不同构造过程提供不同的表示时,即同一构建过程可以产生多种不同表现形式的产品。