我想使用複合模式將一個對象接收到的呼叫轉發給其他人。具有不同類型對象的複合圖案
目前,接收端的物體都是一樣的Abstract
類型,但障礙是他們根據具體類型(認爲不同的模型)選擇性地接受不同類型的objet作爲參數。
據我所看到的,有兩個解決方案,但都不是令人滿意的:
- 使用instanceof來檢測輸入端類類型的對象。這通常被認爲是一種不好的做法。
- 儘可能多的有
Lists
,因爲有輸入類型。這帶來了必須添加List
以適應新的輸入類型的問題,並且每個List
必須依次進行明確處理。
我一直在接口方面想,但還沒有提出一個可行的想法。什麼是解決這個設計問題的方法?綜合是否合適?
P.S:這是在mvc的上下文中。
是的,這也是我看到複合材料的方式。對於我所描述的內容,將會有一種方法讓'Command'根據它的類型忽略參數Object。該對象仍然會使用相同的方法傳遞,但會讓我回到在Command中使用'instanceof'。 – 2010-07-12 22:35:58
我會說可能在具體類中有多個重載的方法簽名和相應的實現。難道你不需要做什麼? – duffymo 2010-07-12 22:40:00
好吧,考慮一下,我想要做的是在想法上與在工廠中使用的選擇過程相似,以根據它們的大小分隔項目(想象篩選)。不同的重載方法將是理想的,但是對象類型允許一些靈活性是一個障礙。也許我想的太難了,有一個更簡單的方法。我想到的另一件事是可以拋出一個對象,忽略ClassCastException,並且只在引用不爲null時才執行某些操作。 – 2010-07-12 23:20:45