使用构造器设计模式会有什么缺点吗?会吗?
编辑 - 我想知道使用构造器设计模式是否会有任何负面影响?在GOF的书中,他们提到了设计模式的好处和坏处。但他们没有提到构造器设计模式的任何不良后果。
使用构造器设计模式会有什么缺点吗?会吗?
编辑 - 我想知道使用构造器设计模式是否会有任何负面影响?在GOF的书中,他们提到了设计模式的好处和坏处。但他们没有提到构造器设计模式的任何不良后果。
使用构建器模式相对于例如构造函数参数和/或设置器/获取器,确实会在DTO中创建更多的代码(并可能引入更多的复杂性)。
在我看来,这不是一个大问题,在大多数情况下没有太多额外的代码。如果您有一个对象具有一些必填和一些可选参数,则使用构建器模式将是物超所值的。
当模式被滥用/误用时,该模式才具有不利因素。即该模式根本没有解决/适用于实际的技术/功能问题。这时你应该寻找另一个模式来解决特定的问题。
这并不专门适用于建造者模式,而是适用于设计模式的普遍情况。
更新:如果您有兴趣学习各种设计模式(特别是GoF设计模式书中提到的模式)和Java API中的实际示例,则可以查看此答案:Java核心库中GoF设计模式的示例 会很有帮助。它包含了链接到维基百科文章以详细解释这些模式。
我支持Jarle的帖子。
但是,当涉及到缺点时:
建造者模式,当与在Java中克服可选参数不足的想法一起使用时,您将失去编译器提供的静态分析(以及IDE提供的所有良好重构功能)。这意味着您只能在运行时检测到某些必需的参数缺失,而不能立即让IDE告诉您出了什么问题...