欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 设计模式之建造者模式

设计模式之建造者模式

2025/4/15 19:36:03 来源:https://blog.csdn.net/2303_80933038/article/details/146359178  浏览:    关键词:设计模式之建造者模式

生活场景

假设你要组装一台游戏电脑,包含:

CPU(Intel 或 AMD)

显卡(NVIDIA 或 AMD)

内存(16GB 或 32GB)

硬盘(SSD 或 HDD)

建造者模式的作用:将复杂对象的组装过程拆解成多个步骤,用不同的"装配工"(建造者)帮你组装不同配置的电脑,避免直接操作复杂的参数组合。

1.定义产品类

作用:

封装电脑的各个部件属性

提供显示配置的方法

class Computer {private String cpu;private String gpu;private int ram;private String storage;// 通过构造函数设置属性(实际由建造者填充)public Computer() {}// Setter方法(建造者通过这些方法配置属性)public void setCpu(String cpu) { this.cpu = cpu; }public void setGpu(String gpu) { this.gpu = gpu; }public void setRam(int ram) { this.ram = ram; }public void setStorage(String storage) { this.storage = storage; }// 显示配置信息public void showSpecs() {System.out.println("CPU: " + cpu);System.out.println("GPU: " + gpu);System.out.println("RAM: " + ram + "GB");System.out.println("Storage: " + storage);}
}

2.定义建造者接口(装配工的标准装配流程)

作用:

规定组装电脑的 步骤顺序

确保所有建造者都按相同流程工作

interface ComputerBuilder {void buildCpu();       // 装CPUvoid buildGpu();       // 装显卡void buildRam();       // 装内存void buildStorage();   // 装硬盘Computer getResult();  // 交付电脑
}

3.具体建造者实现(不同配置方案)

作用:

实现不同的 配置方案(高端/经济型)

每个建造者按自己的方式实现各步骤

3.1.高性能配置者

class HighEndComputerBuilder implements ComputerBuilder {private Computer computer = new Computer();@Overridepublic void buildCpu() {computer.setCpu("Intel i9-13900K"); // 高端CPU}@Overridepublic void buildGpu() {computer.setGpu("NVIDIA RTX 4090"); // 旗舰显卡}@Overridepublic void buildRam() {computer.setRam(32); // 大内存}@Overridepublic void buildStorage() {computer.setStorage("2TB SSD"); // 高速硬盘}@Overridepublic Computer getResult() {return computer;}
}

3.2.经济性配置建造者

class BudgetComputerBuilder implements ComputerBuilder {private Computer computer = new Computer();@Overridepublic void buildCpu() {computer.setCpu("AMD Ryzen 5"); // 中端CPU}@Overridepublic void buildGpu() {computer.setGpu("AMD Radeon RX 7600"); // 性价比显卡}@Overridepublic void buildRam() {computer.setRam(16); // 基础内存}@Overridepublic void buildStorage() {computer.setStorage("512GB SSD + 1TB HDD"); // 混合存储}@Overridepublic Computer getResult() {return computer;}
}

4.指挥者类(组装具体配置)

作用:

控制 组装顺序(先装CPU,再装显卡等)

客户端只需和指挥者交互,无需了解建造细节

class Director {private ComputerBuilder builder;public Director(ComputerBuilder builder) {this.builder = builder; // 绑定具体的建造者}// 定义组装流程public Computer construct() {builder.buildCpu();builder.buildGpu();builder.buildRam();builder.buildStorage();return builder.getResult();}
}

5.客户端使用

关键逻辑:

用户只需选择建造者类型(HighEnd/Budget)

指挥者保证组装流程正确

最终得到不同配置但结构一致的电脑

public class Client {public static void main(String[] args) {// 方案一:组装高端电脑ComputerBuilder highEndBuilder = new HighEndComputerBuilder();Director director = new Director(highEndBuilder);Computer gamingPC = director.construct();gamingPC.showSpecs();/* 输出:CPU: Intel i9-13900KGPU: NVIDIA RTX 4090RAM: 32GBStorage: 2TB SSD*/// 方案二:组装经济型电脑ComputerBuilder budgetBuilder = new BudgetComputerBuilder();director = new Director(budgetBuilder);Computer officePC = director.construct();officePC.showSpecs();/* 输出:CPU: AMD Ryzen 5GPU: AMD Radeon RX 7600RAM: 16GBStorage: 512GB SSD + 1TB HDD*/}
}

总结

优点:

构造过程可控:分步骤构造复杂对象

配置灵活:通过不同建造者实现不同配置

隐藏细节:客户端不直接操作产品内部结构

扩展性示例(新增配置)

要新增一个「轻薄本配置」:

创建  UltrabookBuilder  实现  ComputerBuilder  接口

在建造方法中设置轻薄本专用配置(如低电压CPU、集成显卡)

客户端使用新建造者即可

原有代码无需修改,符合开闭原则(对扩展开放,对修改关闭)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词