为什么有些人说“建造者模式”比使用扩展方法来创建流畅接口更好?

3
在这个讨论中(创建流畅API),一位回答者指出,建造者模式比使用扩展方法来创建流畅接口更好。
为什么会这样呢?扩展方法遵循SOLID原则中的"O"。我个人只在开发流畅接口时使用扩展方法,但现在想重新考虑一下是否需要改变这种做法...

同意,太主观了。 - BenjaminPaul
1
这是对Brian、Servy、Bryan、Mason和Nathan的意见。你们阻碍了合法的研究。 - JWP
我并没有询问任何关于为什么它是真实的意见,我只是要求事实的真相。显然你们不喜欢真相。 - JWP
不想让这个问题沉了,但我会给你点赞。基于观点的标志被提出的非常不一致,这真的很让我烦恼。我已经提交了完全合理的“质量差”的标志,但没有得到处理,也见证了许多好问题被关闭。 - mirichan
2个回答

5

这个SO问题描述了扩展方法的缺点。

此外,一些人认为,扩展方法违反了开闭原则,而不是遵循它,因为它们以可能不被原始创建者预期的方式引入了功能。

如果建造者模式可以在没有缺点的情况下实现相同的目标,那么为什么不使用它呢。


如果遵循约定优于配置的原则,上述提到的任何缺点都不会成为问题。给方法命名以消除歧义并准确地定义(仅限于此)其功能与给类命名一样重要。无论如何,Visual Studio都允许我们跳转到定义。 - JWP

2
我想到的一件事是,扩展方法并不是用于流畅API而是用于扩展类型功能。
构建器模式需要更多的理解,与柯里化、单子和函数式编程有关。
因此,后者是更好的概念基础,可以翻译成许多语言,而前者是C#术语,在其他语言中可能没有对应项。
如果两种方法产生相同的行为,则可以自由选择其中一种。但是,您还应考虑所需/想要的功能:代码的表达能力、可读性、可移植性、安全性和性能都是可能在两种选择之间有所不同的质量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接