Builder模式:为什么我们需要.build()?

 啊迎春的-爱 发布于 2023-01-30 09:28

在研究构建器模式时,标准模式如下:

new SandwichBuilder().salami().pastrami().cat().build();

哪里.salami(), .pastrami(), and .cat()的回报SandwichBuilders,并.build()返回Sandwich.


相反,它被认为是不好的风格,使用以下约定?

new Sandwich().salami().pastrami().cat();

在哪里直接.salami(), .pastrami(), and .cat()返回Sandwich,前面看似不必要的并发症?

1 个回答
  • 构建器模式的最大优点之一是其构建的对象可以是不可变的.你的第二个例子是不可能的,假设salami(),pastrami()等等作为标准的setter,或者如果它们各自返回一个新的实例,它可能是低效的.

    JB Nizet指向Guava's Splitter,这是后一种情况的一个很好的例子.对于您的观点,Guava开发人员必须认为"在看似不必要的复杂化之前"是足以在创建定制Splitters 期间容忍一些额外副本的理由.

    2023-01-30 09:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有