使用构建器设计模式的缺点是什么。有没有?
编辑 - 我想知道使用构建器设计模式是否有任何不良后果?正如GOF书中所述,他们提到了设计模式的好坏后果。但他们没有提到建筑师设计模式的任何不良后果。
答案 0 :(得分:13)
它确实会在DTO中创建更多代码(并且可能会带来更多复杂性),而不是像例如构造函数参数和/或setter / getter那样。
在我看来,这不是什么大问题,在大多数情况下,没有太多额外的代码。如果您的对象具有一些必需参数和一些可选参数,那么构建器模式将非常值得。
答案 1 :(得分:10)
模式仅在模式被滥用/滥用时才是不利的。即该模式根本没有解决/适合实际的技术/功能问题。然后,您应该寻找另一种模式来解决特定问题。
这不是特别适用于构建器模式,而是一般设计模式。
更新:如果您有兴趣了解各种设计模式(特别是GoF设计模式中提到的那些)和Java API中的真实示例,那么您可能会发现这个回答:Examples of GoF Design Patterns in Java's core libraries很有用。它包含维基百科文章的链接,详细解释了模式。
答案 2 :(得分:4)
我是第二个Jarle的post。
否则,当涉及到劣势时:
答案 3 :(得分:3)
Builder模式,当与想法一起使用以克服Java中缺少可选参数时,您将丢失编译器提供的静态分析(以及IDE提供的所有良好的重构功能)。这意味着您将检测到某些必需参数仅在运行时丢失,而不是让您的IDE立即告诉您出现问题...
答案 4 :(得分:2)
与望远镜构造函数比较