Fluent接口的基本特徵之一是傳統上將被聲明爲void
的方法將返回可用的東西,通常是它們所屬的類的實例(即,this
)。 StringBuilder的體現了這個慣例,雖然它不是完全每-SE流利,但它給你鏈接的方法方便調用:生成性工具生成流利等價的非流利類?
sb.Append("Foo")
.Append("Bar")
.AppendLine();
System.Web.Mvc.TagBuilder
,但是,不遵循這個慣例;方法都是void
。
一個快速和骯髒的方式來整理這件事可能是在FluentTagBuilder
類來封裝私人TagBuilder(_instance
),然後實現所有相同的方法,但工作委託給該實例,並返回this
而不是void
。
什麼是最好的不那麼快速和骯髒的方式來實現這一目標?繼承顯然不會這樣做,因爲方法只會因返回類型而異。如果可能的話,我寧願保持簡單,不涉及模擬/替代框架。感謝您分享的任何智慧!
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-02-20 22:59:22
@JohnSaunders,謝謝。我不同意共識(標籤中的前導關鍵字可以更容易地告訴哪個瀏覽器選項卡是哪個,哪個搜索結果最有可能擁有我想要的內容等);那就是說,既然那裏已經達成了共識,我將從現在開始嘗試遵守它。 :) – 2013-02-21 15:10:05
最受歡迎的標籤被添加到標題。他們已經想到了。 – 2013-02-21 15:15:59