当前位置: 首页 > news >正文

编程-设计模式 4:建造者模式

设计模式 4:建造者模式

定义与目的
  • 定义:建造者模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示
  • 目的:该模式主要用于创建复杂对象时,这些对象的创建过程可能涉及多个步骤,并且可能需要不同的配置选项。建造者模式将构建过程表示分离,使得可以构建出不同配置的同一类型对象。
实现示例

假设我们要创建一个计算机对象,这个对象有很多配置选项,比如处理器、内存、硬盘等。我们可以使用建造者模式来创建不同配置的计算机实例。

// 定义产品类 - 计算机
public class Computer {// 计算机的处理器型号private String processor;// 计算机的内存大小(单位:GB)private int ram;// 计算机的硬盘大小(单位:GB)private int hardDrive;// 私有构造函数,仅允许通过 Builder 创建 Computer 实例// 参数 builder 用于从 Builder 类中获取处理器、内存和硬盘的信息private Computer(Builder builder) {this.processor = builder.processor;this.ram = builder.ram;this.hardDrive = builder.hardDrive;}// Builder 类,用于构建 Computer 实例public static class Builder {// 计算机的处理器型号private String processor;// 计算机的内存大小(单位:GB)private int ram;// 计算机的硬盘大小(单位:GB)private int hardDrive;// 设置处理器型号// 参数 processor 为处理器型号// 返回当前 Builder 实例,以便可以继续链式调用其他方法public Builder processor(String processor) {this.processor = processor;return this;}// 设置内存大小// 参数 ram 为内存大小(单位:GB)// 返回当前 Builder 实例,以便可以继续链式调用其他方法public Builder ram(int ram) {this.ram = ram;return this;}// 设置硬盘大小// 参数 hardDrive 为硬盘大小(单位:GB)// 返回当前 Builder 实例,以便可以继续链式调用其他方法public Builder hardDrive(int hardDrive) {this.hardDrive = hardDrive;return this;}// 构建 Computer 实例// 返回使用当前 Builder 实例创建的 Computer 实例public Computer build() {return new Computer(this);}}// Getter 方法,用于获取处理器型号public String getProcessor() {return processor;}// Getter 方法,用于获取内存大小public int getRam() {return ram;}// Getter 方法,用于获取硬盘大小public int getHardDrive() {return hardDrive;}// 重写 toString 方法,用于格式化输出 Computer 实例的信息@Overridepublic String toString() {return "Computer{" +"processor='" + processor + '\'' +", ram=" + ram +", hardDrive=" + hardDrive +'}';}
}// 客户端代码
public class Client {public static void main(String[] args) {// 创建一台配置较高的计算机Computer computerHighEnd = new Computer.Builder().processor("i9")      // 设置处理器型号为 i9.ram(32)             // 设置内存大小为 32 GB.hardDrive(1024)     // 设置硬盘大小为 1024 GB.build();            // 构建 Computer 实例// 创建一台配置较低的计算机Computer computerLowEnd = new Computer.Builder().processor("i3")     // 设置处理器型号为 i3.ram(4)             // 设置内存大小为 4 GB.hardDrive(128)     // 设置硬盘大小为 128 GB.build();           // 构建 Computer 实例// 输出高配置计算机的信息System.out.println(computerHighEnd);  // 输出: Computer{processor='i9', ram=32, hardDrive=1024}// 输出低配置计算机的信息System.out.println(computerLowEnd);   // 输出: Computer{processor='i3', ram=4, hardDrive=128}}
}
使用场景
  • 当你需要创建一个复杂对象,且该对象的构建过程需要分步骤进行时。
  • 当构建对象的不同配置需要不同的步骤时。
  • 当构建对象的步骤可能会发生变化时。

建造者模式通过将构建过程与表示分离,使得可以在不同的情况下使用相同的构建步骤来创建不同的对象配置。这对于创建复杂对象时非常有用,特别是在对象的构建过程需要多个步骤的情况下。

小结

建造者模式适用于创建具有多个可选部分的复杂对象。它提供了一种方式来逐步构建这些对象,同时保持代码的简洁性和可扩展性。

http://www.lryc.cn/news/420675.html

相关文章:

  • 百度文心一言API调用,千帆大模型获取API Key和API Secret图解
  • kafka下载|安装
  • 贪心算法part03
  • 以树莓集团的视角:探索AI技术如何重塑数字媒体产业发展
  • package.json的 和 的区别,以及|| 和 | 的区别
  • Wireshark_DNS_v7.0
  • 阿里云的CentOS系统上安装Docker
  • 力扣面试经典100题
  • python打怪练习
  • excel下载模板,0KB或者乱码问题
  • JDBC连接Mysql数据库超详细讲解
  • ArcGIS基础:自定义创建点线面等样式符号以方便使用
  • 蔚来2025届全球校招笔试/测评通关攻略北森测评题库更新了!
  • 如何在linux系统上部署Redis
  • 操作系统开发行业的市场需求分析
  • SpringMVC 的 拦截器
  • Redisson可重入锁原理(基于黑马视频总结,保姆级)
  • Ubuntu 安装 Watt-Toolkit
  • python中的省略号(...)
  • 第129天:内网安全-横向移动WmiSmbCrackMapExecProxyChainsImpacket
  • ChatGPT教我将MySQL中where find_in_set改成PostgreSQL支持的写法
  • Python命令模式:掌控你的代码指令
  • 【物联网】(防水篇)电子产品 IPX7 防水级别测试的具体流程
  • Redis 实现消息队列
  • 模板初阶(详解)
  • 对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
  • C++设计模式(代理模式)
  • Linux系统驱动(十三)Linux内核定时器
  • Visual Studio 调试时加载符号慢
  • Spring Cloud Config:动态配置的魔法师