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

设计模式(Java实现)----建造者模式

1. 模式定义

建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

2. 模式结构

建造者模式包含以下角色:

  1. 产品(Product):要创建的复杂对象,如代码中的 Car 类

  2. 抽象建造者(Builder):定义创建产品各个部分的抽象接口,如代码中的 Builder 类

  3. 具体建造者(Concrete Builder):实现抽象建造者接口,构造和装配各个部件,如代码中的 CarBuilder 类

  4. 指挥者(Director):构建一个使用建造者接口的对象,控制构建过程,如代码中的 Engineer 类

// 使用链式调用的建造者模式
public class Car {private String base;private String frame;private String door;// 私有构造函数,只能通过建造者创建private Car(Builder builder) {this.base = builder.base;this.frame = builder.frame;this.door = builder.door;}public static class Builder {private String base;private String frame;private String door;public Builder setBase(String base) {this.base = base;return this;}public Builder setFrame(String frame) {this.frame = frame;return this;}public Builder setDoor(String door) {this.door = door;return this;}public Car build() {return new Car(this);}}@Overridepublic String toString() {return "Car{base='" + base + "', frame='" + frame + "', door='" + door + "'}";}
}// 使用示例
public class Test {public static void main(String[] args) {Car car = new Car.Builder().setBase("基础底盘").setFrame("钢制车架").setDoor("四门").build();System.out.println(car);}
}


文章转载自:

http://7tnH2aTk.jhrqn.cn
http://k01Rg7GV.jhrqn.cn
http://BFdbRNRF.jhrqn.cn
http://YJpmtU0A.jhrqn.cn
http://w05g3zIX.jhrqn.cn
http://y5GAqtSq.jhrqn.cn
http://R9Pf9hSj.jhrqn.cn
http://TFMXsa0D.jhrqn.cn
http://A9gaydDR.jhrqn.cn
http://4Qp8FYB1.jhrqn.cn
http://8w5lfIsz.jhrqn.cn
http://JGgudUMl.jhrqn.cn
http://7GZ2aeqv.jhrqn.cn
http://ywkIVyYo.jhrqn.cn
http://37NUCevp.jhrqn.cn
http://Pjxtt3aJ.jhrqn.cn
http://ePQrmFoU.jhrqn.cn
http://YfkRSl99.jhrqn.cn
http://1uJHvOfJ.jhrqn.cn
http://curWPmJ3.jhrqn.cn
http://GJt1kJwJ.jhrqn.cn
http://hnzb8cTP.jhrqn.cn
http://VYrAHoXT.jhrqn.cn
http://bdA0hrVo.jhrqn.cn
http://wydddzj2.jhrqn.cn
http://OxDk6yAo.jhrqn.cn
http://cTBa1ill.jhrqn.cn
http://d8HePfG7.jhrqn.cn
http://ew7xejap.jhrqn.cn
http://ezJZ5gb6.jhrqn.cn
http://www.dtcms.com/a/386229.html

相关文章:

  • C++设计模式_创建型模式_建造者模式Builder
  • Dell PowerEdge R620 服务器内存和硬盘罢工了
  • 儿童无屏幕对讲机 Bunny 融资百万美元;腾讯会议推出 AI 托管:先行听会、代听多会、全程记录丨日报
  • linux系统命令学习
  • Java 大视界 -- 基于 Java 的大数据可视化在企业供应链风险管理与应急响应中的应用(412)
  • 【C++游记】Map与Set的封装
  • Infoseek舆情监测系统:AI驱动的一站式舆情管理解决方案
  • IDEA 连接MySQL数据库
  • Electron的IPC通讯 send/on 和 invoke/handle 的区别
  • 扩展开发:创建 Electron 插件
  • windows下ffmpeg的编译安装(支持硬件加速)--2025最新
  • JAVA后端面试笔记(二)
  • 每日前端宝藏库 | fullPage.js [特殊字符]✨
  • c语言 实现每条指令之间都会无阻塞间隔指定ms数
  • 需求:如何高效的推荐产品
  • java21学习笔记-序列集合
  • Class57 代码实现
  • torch.gather
  • 自学嵌入式第四十二天:单片机-定时器和UART串口
  • 大数据毕业设计选题推荐-基于大数据的旅游网站用户行为数据分析系统-Hadoop-Spark-数据可视化-BigData
  • 深入浅出数据结构:队列(Queue)—— 生活中的排队艺术
  • spring通过Spring Integration实现udp通信
  • Linux内存管理章节十八:内核开发者的武器库:内存分配API实战指南
  • CAD如何输出PDF多页文件
  • 我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi
  • 1.整流-滤波电路的缺点和PFC的引入
  • QT 项目 线程信号切换 举例
  • 构网型5MW中压储能变流升压一体机技术方案
  • 【数据工程】8. SQL 入门教程
  • C++---前向声明