我想知道什麼是最好的方法來驗證一個類具有所有必需的細節才能使用。如何驗證類在使用前配置了所有屬性?
例如說我有一個Book
類,我想將關於該書的一組屬性傳遞給Book
構造函數。
Book book = new Book(bookProperties);
我想確保BookProperties
完成什麼,即擁有所有的信息。
讓我們在這個例子說,我有以下幾點:
- 書名
- 書作者
- 書本原稿發佈日期
的一種方式是,我可以創建一個默認的構造函數只接受全部3項:
BookProperties bookProperties = new BookProperties("2001: A Space Odyssey",
"Arthur C. Clarke",
1968);
現在沒問題,如果我們只有三個值,但是說我的類有10個或更多屬性需要用戶初始化,然後才能創建Book
類。
我在想的一件事是在BookProperties中有一個名爲isValid
的方法。然後在Book
類的構造函數中,我會看到是否bookProperties.isValid
並斷言返回是否爲假。
這是一個好主意,還是我對這一切都錯了?
但是,在按屬性構建狀態屬性時,始終難以保存正確的類不變量。如果你不小心,最終可能會得到一個具有不同模式的類,具體取決於是否填充了足夠的屬性。我更喜歡對象構建器方法(BookProperties),但是爲* it *使用初始化語法,而不是最終的類。 – 2009-06-07 08:35:38