簡體   English   中英

構建器模式與我的實現

[英]Builder pattern VS my implementation

我必須構建一個日志記錄dll程序集,該程序集將使用大量可選參數,其中約有20個。 它是用C#編寫的。

我最終要做的是讓我的日志記錄類接受“ log”類型的對象。 該“ log”類包含所有必需的參數以及獲取/設置它們的相應屬性。 當然,所有參數都是首先使用默認值啟動的。

將“ log”對象傳遞到我的主日志記錄類后,它將從該“ log”對象中提取值並執行打印到文件的操作。

我的問題是-我現在應該將其更改為構建器模式嗎? (我現在在“ Effective Java 2nd Edition”一書中學習了它)。

我可以看到這種模式相對於調用具有十億個參數的Ctr / Methods的優勢,但我也認為傳入包含所有參數的新對象也不錯。

您能解釋一下我是否真的應該更改設計,為什么嗎?

由於這是一個設計問題,因此我沒有提供任何代碼輸入。 如果我需要發布一些代碼,請告訴我。

使用設計模式沒有強制性規則。 但是,如果將其應用於正確的用例,則可以使工作變得更簡單。

您絕對可以在您的情況下使用Builder模式。 以下是一些准則:

  1. 首先確定Log對象的多少個屬性是強制性的(例如x數),以及幾個可選的屬性(y)。

2.從日志對象中刪除y屬性,並通過“ add”方法將其放在Builder類中。

  1. 如果x <6,從日志類中刪除x屬性,則將它們放在Builder類的構造函數中。 現在,您可以擺脫Log類本身。

  2. 否則,如果x> = 6,則將它們保留在log類中,並在Builder類的構造函數中傳遞該類。 這也稱為“傳輸對象”。

您可以根據需要更改決定編號6。 通常,包含6個或更多參數的構造函數的可讀性較差。

您是否有一個帶有許多參數的構造函數,其中許多參數屬於同一類型? 去建設者。

您是否有許多構造函數,它們之間的差異很小? 去建設者。

您是否已初始化一個類,其中一個構造函數遵循鏈狀結構調用另一個構造函數? 去建設者。

否則,請自己做。

暫無
暫無

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

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