我经常使用一种模式,使用方法链设置一个对象,类似于Builder或Prototype模式,但不使用每个方法调用创建新对象,而是修改原始对象。
new Menu().withItem("Eggs").withItem("Hash Browns").withStyle("Diner");只是想知道这个模式是否有名字,它是否被认为是反模式,因为虽然它可以更流畅地阅读,但它会导致长的方法链。
发布于 2012-03-02 14:50:15
发布于 2012-03-02 16:09:36
当链中有某种流或可发现性时,这种方法链接通常称为Fluent Interface。或者,您可以认为像jQuery这样的api严重依赖于方法链而不是“流利”,因为对可发现性的强调并不相同--更多的是为了方便。
对于您的示例(使用withx,withy),您可以考虑这是Builder模式的一个变体,因为您有一个特殊的类,给定一些状态(方法调用),它知道如何返回一个正确配置的对象。
如果使用得当,这不是反模式。
发布于 2012-05-25 09:50:57
不管它是否被认为是反模式,
绝对不是反模式。jQuery可能是这方面最常用的实现。
因为虽然它能更流畅地阅读,但它会导致长的方法链。
是的,可以,但还有什么可选的呢?最后,您可以得到几乎一个简单的英语句子,使用api指导您找到可用的和合适的语句。
https://softwareengineering.stackexchange.com/questions/137999
复制相似问题