为什么有些人说" Builder Pattern"比使用Fluent接口的扩展方法更好吗?

时间:2015-02-19 16:19:12

标签: c# extension-methods builder fluent

在此讨论中(creating API that is fluent),响应表明Builder模式比使用Extension方法创建Fluent接口要好。

这可能是什么原因?扩展方法遵循" O"在SOLID原则中......我个人只使用Extension方法开发Fluent接口,但我想知道是否需要重新考虑这个......

2 个答案:

答案 0 :(得分:5)

SO Question描述了扩展方法的缺点。

此外some认为,扩展方法违反了开放/封闭原则而不是遵循原则,因为它们以原始创作者可能无法想象的方式引入功能。

如果Builder Pattern实现了相同的目标而没有缺点,那么为什么不使用它呢。

答案 1 :(得分:2)

我想到的一件事是,扩展方法不被认为用于流畅的API,而只是用于扩展类型的功能。

构建器模式需要更多的理解,与currying,monads和函数式编程有关。

所以后者是一个更好的概念基础,可以翻译成许多语言,而前者是一个C#语言,可能没有其他语言的对应语言。

如果您使用这两种方法获得相同的行为,则可以自由选择使用。但是你还应该考虑你需要/想要哪些功能:表现力,可读性,可移植性,安全性,性能代码都是两种选择之间可能不同的品质。