2010-03-26 44 views
3

有沒有一種方法來實現通用形式的空對象設計模式,以便我不需要爲每個buisness對象實現它。如何以通用形式實現NULL對象設計模式?

對我而言,每個商務課程都有兩個高級課程。一個用於單個記錄,另一個用於列表。所以我認爲應該有一種方法來實現高層次的NULL對象設計模式,而不必爲每個類實現它。

有沒有辦法,怎麼樣?

回答

2

在我的理解中,不必爲每個類都實現NULL類,而是爲每個接口都實現。在這種情況下,您肯定可以編寫一些方法來爲使用反射的任何給定接口生成一個空的標準實現。但是,對於某些接口,NULL對象的期望行爲可能有特殊情況,在這種情況下,通用解決方案將失敗。

例如,您可以有一個實現IComparable的接口。在某些情況下,您可能希望NULL對象等於所有其他對象,而在其他情況下,您希望它比所有其他對象都小。

編輯:IComparable只是一個例子。關鍵是,我不認爲有一個通用的NULL類實現是聰明的。你使用NULL類,所以你的程序可以工作,而無需處理NULL返回值的特殊情況。如果你有一個默認的實現,那麼你肯定會再次檢查特殊情況,並且模式的整個點將被忽略。

+0

謝謝。我將不得不瞭解IComparable接口。你能幫我一個小費嗎? – Tebo 2010-03-26 12:00:34

+0

編輯回答您的評論。 – 2010-03-26 12:05:12

+0

如果從繼承樹中繼承這個通用的NULL對象接口的每個類自己處理它們的null情況,而不是用不同的類來處理null。 – Tebo 2010-03-26 12:18:31

0

正如here an SO之前已經討論的那樣,NULL對象的實現是依賴於域的,所以我不認爲你的問題有一個通用的答案。也許你會發現一個或多或少的通用解決方案,你的類型的業務對象。如果你提供了一些你想到的例子,你可能會得到一些更好的答案。