2013-04-11 85 views
0

我在我的項目中遇到設計相關的困境&如果我能得到一些建議,我會非常感激。有一個POJO大約有20-25個字段&在某些情況下,這個對象根據需要被部分實例化。在我看來這不是一個好的做法&應該避免使用繼承或組合。我正在尋找建議,以實現對象創建邏輯(也許是設計模式)的最佳方式,以避免部分實例化。目前,正在使用構建器模式創建對象。
避免部分對象實例化

基本上它是一個swing應用程序。數據從JDialog &的不同字段(20-25)中獲取,傳遞到下一個窗口進行顯示以供確認。這些數據使用POJO傳遞。此POJO目前使用構建器模式實例化。但是我正在尋找一種方法來實現這個POJO沒有部分實例化的&在其他情況下只需要傳遞幾個字段。

在此先感謝!

+0

如果你給我們一個例子,這將有所幫助。 – 2013-04-11 07:12:27

回答

1

如果你有一個參數只能在某些條件下使用,而其他條件下不需要,那麼你肯定應該做一些重構。例如,嘗試Extract Class重構,將一些參數和方法分組。如果您有一些typecodes,表明需要某些參數,請考慮replacing typecode with subclasses 如果typecode在對象的生命週期中沒有更改,或者替換t ypecode with state/strategy。然後,將字段和方法從原始類移動到這些新創建的類。

我建議您閱讀Martin Fowler的「重構」一書。這真是太棒了,非常有幫助。

構建器模式可以,但是您可能想要爲對象創建實現工廠方法模式。

+0

謝謝安德烈。這些是一些非常有用的鏈接。 您可以請舉一個例子,說明當對象有20-25個成員時,工廠方法模式實現將如何幫助阻止部分對象的創建。 – mindreader 2013-04-17 05:47:29

+1

@mindReader,當你使用工廠方法時,基本上給你的類的使用者一個有限的對象創建選項集。例如,如果您的對象具有必須是字段的屬性以及僅在某些條件下才歸檔的多組屬性,則可以爲每個條件實施一個工廠方法,從而確保以有效狀態創建對象。然而,使用工廠方法的更有效的方法是生成父類的一些子類(如果事先做了一些重構並設法將大對象拆分爲層次結構)。希望這可以幫助 :) – 2013-04-17 07:04:22