簡體   English   中英

帶構建器的C#構造對象

[英]C# construction objects with builder

Fluent構建器是一種眾所周知的模式,用於構建具有許多屬性的對象:

Team team = teamBuilder.CreateTeam("Chelsea")
    .WithNickName("The blues")
    .WithShirtColor(Color.Blue)
    .FromTown("London")
    .PlayingAt("Stamford Bridge");

但是,由於一個特殊原因,使用它對我來說似乎不太清楚:

  • 每個Team對象都有其最小的操作狀態 ,換句話說,必須設置的屬性集(必需),以便對象可以使用。

現在,考慮到你必須保持這種狀態,應如何使用Fluent builder方法?

如果With_XYZ成員修改了對象的一部分,那么這不會影響這種狀態嗎?

也許這種情況有一些一般規則?


更新:

如果CreateTeam方法應該將強制屬性作為參數,接下來會發生什么?

  • 如果我(例如)省略WithNickName調用會發生什么?

  • 這是否意味着昵稱應該默認為某個DefaultNickname

  • 這是否意味着該示例(請參閱鏈接)不好,因為該對象可能處於無效狀態?

  • 而且,我懷疑在這種情況下,流暢的建築方法實際上失去了它的“美麗”,不是嗎?

CreateTeam()應該具有必需的屬性作為參數。

Team CreateTeam(string name, Color shirtColor, string Town)
{
}

在我看來,Fluent Interface的要點是:

  • 在構造函數中將參數數量最小化為零,同時在創建時仍動態初始化某些屬性。
  • 使屬性/參數值關聯非常清晰 - 在大型參數列表中,什么值是什么? 沒有進一步挖掘就說不出來。
  • 實例化的編碼風格非常干凈,可讀和可編輯 使用此格式設置樣式添加或刪除屬性設置不易出錯。 IE刪除整行,而不是在長參數列表的中間編輯; 更不用說編輯錯誤的參數了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM