我经常使用一种模式,在该模式下,我使用方法链来设置一个对象,类似于Builder
或Prototype
模式,但没有在每个方法调用中创建新对象,而是修改了原始对象。
例:
new Menu().withItem("Eggs").withItem("Hash Browns").withStyle("Diner");
只是想知道这种模式是否有名称,以及是否将其视为反模式,因为尽管它可以更流畅地阅读,但它可能导致较长的方法链。
3
流畅的界面取决于样式。如果您正在编写API,请为其提供替代形式。
—
Oded 2012年
有关更多讨论,请看以下问题:programmers.stackexchange.com/questions/69519/…–
—
埃里克·金
@Oded可以通过仅使每个调用单独的语句来使用这种API,而无需链接,或者您对替代方案有其他想法吗?
—
加勒特音乐厅
@GarrettHall-当然可以,但是您最终会在
—
Oded 2012年
menu.withStyle("")
没有上下文的情况下打电话。在这种情况下,您需要两个 API。
@GarrettHall“流利接口”的重点是方法链,它的含义像句子一样。从这个意义上讲,长方法链不被认为是不好的。但是,在这里我也同意Oded的观点,最好也以更常规的语法提供相同的功能。这样,开发人员可以选择使用哪种方法。
—
埃里克·金