我有一個類是複合模式中的葉子。該類有一個屬性,可以是A類型或B類型。它們唯一的通用接口是Object類型。屬性的兩種可能的類型
我應該如何支持這個。
我可以
具有用於每種類型的一個add方法。然而,這意味着我應該有兩個A和B類型的屬性,並且當我想獲得正確的屬性時應該檢查null。
有一個Object類型的屬性。這意味着我必須檢查當我獲得該屬性時它是哪種類型的實例。
這種類型的問題的最佳解決方案是什麼?或者有更好的解決方案
我有一個類是複合模式中的葉子。該類有一個屬性,可以是A類型或B類型。它們唯一的通用接口是Object類型。屬性的兩種可能的類型
我應該如何支持這個。
我可以
具有用於每種類型的一個add方法。然而,這意味着我應該有兩個A和B類型的屬性,並且當我想獲得正確的屬性時應該檢查null。
有一個Object類型的屬性。這意味着我必須檢查當我獲得該屬性時它是哪種類型的實例。
這種類型的問題的最佳解決方案是什麼?或者有更好的解決方案
我個人會選擇單一的Object
屬性方法。記錄屬性可能返回的對象的類型,並讓調用代碼使用可用的語言功能來確定對象類型,並根據需要進行強制轉換。實現兩個屬性有點重塑你的語言的「is-a」運算符,並且如果你需要添加更多可能的類型,它將很快變得難以管理。
那麼如果您使用的是支持類型抽象的語言(如Java中的泛型或C++中的模板),那麼您可以將該屬性設置爲泛型類型。如果沒有,使用對象,每種類型的方法只是一個醜陋的黑客(如果你稍後添加更多的類型,那麼這是一種無法形容的方法)。
我相信OP表明泛型不適用的情況;例如不是每個處理該對象的人都會事先知道*它將包含什麼類型的對象,並且必須事先知道泛型參數才能使用該類型。 – cdhowie 2011-01-14 14:42:07