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

建造者模式(Builder)

Builder模式概述

Builder模式是一种创建型设计模式,通过分步骤构建复杂对象而非一次性创建。它特别适用于需要创建包含多个可选参数的对象场景。

核心思想

  • 将复杂对象的构建与表示分离
  • 提供流畅的API接口
  • 支持链式调用
  • 确保对象创建的一致性和完整性

典型结构

1. 产品类(Product)

public class Computer {private String cpu;private String memory;private String storage;private String graphicsCard;// 构造函数、getter和setter方法
}

2. 抽象建造者(Builder)

public abstract class ComputerBuilder {protected Computer computer = new Computer();public abstract void buildCpu();public abstract void buildMemory();public abstract void buildStorage();public abstract void buildGraphicsCard();public Computer getResult() {return computer;}
}

3. 具体建造者(ConcreteBuilder)

public class GamingComputerBuilder extends ComputerBuilder {@Overridepublic void buildCpu() {computer.setCpu("Intel i9-12900K");}@Overridepublic void buildMemory() {computer.setMemory("32GB DDR5");}@Overridepublic void buildStorage() {computer.setStorage("2TB NVMe SSD");}@Overridepublic void buildGraphicsCard() {computer.setGraphicsCard("RTX 4090");}
}

4. 指挥者(Director)

public class ComputerDirector {private ComputerBuilder builder;public void setBuilder(ComputerBuilder builder) {this.builder = builder;}public Computer construct() {builder.buildCpu();builder.buildMemory();builder.buildStorage();builder.buildGraphicsCard();return builder.getResult();}
}

实现方式(链式调用)

现代Java中更常用的链式调用方式:

public class Computer {private String cpu;private String memory;private String storage;private String graphicsCard;private Computer() {} // 私有构造函数public static class Builder {private Computer computer = new Computer();public Builder cpu(String cpu) {computer.cpu = cpu;return this;}public Builder memory(String memory) {computer.memory = memory;return this;}public Builder storage(String storage) {computer.storage = storage;return this;}public Builder graphicsCard(String graphicsCard) {computer.graphicsCard = graphicsCard;return this;}public Computer build() {// 验证逻辑if (computer.cpu == null) {throw new IllegalStateException("CPU is required");}return computer;}}// getter方法public String getCpu() { return cpu; }public String getMemory() { return memory; }public String getStorage() { return storage; }public String getGraphicsCard() { return graphicsCard; }
}

使用示例

// 游戏电脑配置
Computer gamingComputer = new Computer.Builder().cpu("Intel i9-12900K").memory("32GB DDR5").storage("2TB NVMe SSD").graphicsCard("RTX 4090").build();// 办公电脑配置
Computer officeComputer = new Computer.Builder().cpu("Intel i5-12400").memory("16GB DDR4").storage("512GB SSD").build();

Builder模式优势

  • 参数可选性:只需设置必要参数
  • 参数无序性:设置顺序灵活
  • 对象不可变:创建后无法修改
  • 代码可读性:逻辑清晰明了
  • 类型安全性:编译时检查
  • 验证机制:支持构建时参数验证

适用场景

  • 创建包含多个可选参数的复杂对象
  • 需要参数验证的对象构建
  • 不可变对象的创建过程
  • 各类配置对象的构造
  • 需要提供流畅API接口的设计

与其他模式对比

  • Factory模式:处理参数固定的对象创建
  • Builder模式:处理复杂对象的逐步构建
  • Prototype模式:处理对象复制
  • Singleton模式:处理单例创建

Builder模式是Java开发中构建复杂对象的重要工具,特别适合创建包含多个可选参数的对象,是现代Java开发的核心设计模式之一。

下一篇:装饰器模式和建造者模式的使用场景和区别-CSDN博客

http://www.dtcms.com/a/276547.html

相关文章:

  • Python 实战:构建可扩展的命令行插件引擎
  • Java 方法重载与构造器
  • 【Python练习】039. 编写一个函数,反转一个单链表
  • CSP-S 模拟赛 10
  • pytest自动化测试框架实战
  • 【王树森推荐系统】行为序列01:用户历史行为序列建模
  • Java责任链模式实现方式与测试方法
  • Python爬虫实战:研究xlwt 和 xlrd 库相关技术
  • 【理念●体系】迁移复现篇:打造可复制、可复原的 AI 项目开发环境k
  • 笔试题库 | 亿纬锂能社招大易笔试测评题库考点分析及真题整理
  • 张量拼接操作
  • 【IT-Infra】从ITIL到CMDB,配置管理,资产管理,物理机与设备管理(含Infra系列说明)
  • QML与C++相互调用函数并获得返回值
  • 2025 年 4-6 月大模型备案情况分析
  • [ABC267F] Exactly K Steps
  • 部署项目频繁掉线-----Java 进程在云服务器内存不足被 OOM Killer 频繁杀死-----如何解决?
  • python正则表达式re(Regular Expression)
  • 【代码随想录】刷题笔记——哈希表篇
  • 【人工智能】AI Agent 工作流及产品介绍
  • 傅里叶方法求解正方形区域拉普拉斯方程
  • 2025 年第十五届 APMCM 亚太地区大学生数学建模竞赛-B 题 疾病的预测与大数据分析 成品
  • 阻有形,容无声——STA 签核之RC Corner
  • docker—— harbor私有仓库部署管理
  • 在LC480T上部署xapp1052
  • OSPF五类LSA之FA实验案例解析
  • promise 如何实现红绿黄灯亮
  • BGP 路由优选属性(7)【MED】官方考试综合实验题【bgp】【acl】【ip-prefix】【route-policy】【icmp 环路】精讲
  • 基于同花顺API的熊市与牛市识别模型开发及因子分析
  • CCS-MSPM0G3507-2-基础篇-定时器中断
  • Linux如何设置自启动程序?