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

java 实现建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,用于创建一个复杂对象,将对象的构建过程与其表示分离,以便可以使用相同的构建过程来创建不同的表示。在Java中,可以使用建造者模式来构建具有多个属性的对象。下面是一个简单的Java实现建造者模式的示例:

首先,我们创建一个产品类 Product,该产品具有多个属性需要设置:

public class Product {private String part1;private String part2;private String part3;public void setPart1(String part1) {this.part1 = part1;}public void setPart2(String part2) {this.part2 = part2;}public void setPart3(String part3) {this.part3 = part3;}@Overridepublic String toString() {return "Product [part1=" + part1 + ", part2=" + part2 + ", part3=" + part3 + "]";}
}

接下来,我们创建一个建造者类 ProductBuilder,用于构建 Product 对象。建造者模式的关键在于建造者类负责设置产品的各个属性:

public class ProductBuilder {private Product product = new Product();public ProductBuilder withPart1(String part1) {product.setPart1(part1);return this;}public ProductBuilder withPart2(String part2) {product.setPart2(part2);return this;}public ProductBuilder withPart3(String part3) {product.setPart3(part3);return this;}public Product build() {return product;}
}

最后,我们可以使用建造者模式来构建 Product 对象:

public class BuilderPatternDemo {public static void main(String[] args) {Product product = new ProductBuilder().withPart1("Part 1").withPart2("Part 2").withPart3("Part 3").build();System.out.println(product);}
}

在这个示例中,我们通过 ProductBuilder 类来构建 Product 对象,可以逐步设置产品的各个属性,最后使用 build 方法来获取最终的产品对象。这种方式使得对象构建的过程更加清晰,易于理解和维护,同时允许构建不同属性的产品。

建造者模式在需要构建复杂对象,且对象的构建过程有多个步骤或属性设置时非常有用。它可以使客户端代码更加简洁,同时也能够保持代码的可读性和可维护性。

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

相关文章:

  • 串行FIR滤波器
  • Spring Boot 整合 Shiro(后端)
  • 面试中的自我介绍:首印象决定一切
  • 深入理解联邦学习——联邦学习的价值
  • linux 内存一致性
  • Vue 如何监听 localstorage的变化
  • ActiveMQ使用JDBC持久化消息
  • 光环云出席Enjoy出海AIGC主题研讨会,助力企业迎接AI时代机遇与挑战
  • 动态规划:路径和子数组问题(C++)
  • 微服务-gateway跨域配置
  • 爬虫项目(二):中国大学排名
  • 十二、MySQL(DQL)分组/排序/分页查询如何实现?
  • 设计模式概念学习
  • Spring MVC 五 - DispatcherServlet初始化过程(续)
  • day36:网编day3,TCP、UDP模型
  • MySQL——MySQL的基础操作部分
  • 编译OpenWrt内核驱动
  • 文件上传漏洞-upload靶场5-12关
  • Redis功能实战篇之Session共享
  • leetcode235. 二叉搜索树的最近公共祖先(java)
  • 2023物联网新动向:WEB组态除了用于数据展示,也支持搭建业务逻辑,提供与蓝图连线和NodeRed规则链类似的可视化编程能力
  • react将文件转为base64进行上传
  • 生成式人工智能能否使数字孪生在能源和公用事业行业成为现实?
  • SpringBoot集成JWT token实现权限验证
  • 算法通关村第11关【青铜】| 位运算基础
  • 无涯教程-Android - RadioGroup函数
  • 降噪音频转录 Krisp: v1.40.7 Crack
  • 基于React实现:弹窗组件与Promise的有机结合
  • docker使用(一)生成,启动,更新(容器暂停,删除,再生成)
  • 用Qt自制一个小闹钟