gpt4 book ai didi

java - 构建器模式适用于哪里

转载 作者:行者123 更新时间:2023-11-30 03:23:05 26 4
gpt4 key购买 nike

您好,我对构建器设计模式有疑问。从pluralsight视频中我了解到该模式用于避免可变类中伸缩构造函数的复杂性。其他一些网站将其解释为一种通过将构建器保留为组合来开发或构造复杂对象的方法。我完全困惑。请澄清一下?

最佳答案

复杂的构造函数对于不可变或可变的类可能是不利的。

大型构造函数(或构造函数层次结构)的一个问题是,您最终可能会得到一个用于多种目的的大型构造函数。例如,如果您正在创建一个全新的对象,某些参数可能为 null,但当您从其他地方调用它时,它们不能为 null。

弄清楚如何使用这些构造函数是很痛苦的。即使它们内置了验证,您仍然必须检查是否以正确的方式创建它。构建器可以提供提供提示或强制人们以正确方式创建它的方法。例如builder.copy(obj).setName("newObj").build()。这给出了有关如何复制对象的提示,它可能比通过构造函数查找要使用的正确对象更好。

另一个问题是您必须提供所有必需的构造函数参数。即使有合理的默认值,您也可能被迫提供一些东西。构建器可以包含默认值,因此您只需设置您感兴趣的参数。

另一个问题是一个大的构造函数可能有多个连续的相同类型的参数。它要求某人意外地输入错误的值。构建器强制您调用具有有意义名称的方法。

构建器也具有与静态工厂相同的优点。它可以返回一个接口(interface)而不是具体类型。这很好,因为您鼓励客户端类针对接口(interface)工作。

评论中链接的答案有更多充分的理由。

关于java - 构建器模式适用于哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30859341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com