我想在C++中使用複合設計模式,以便能夠創建和操作一組對象。我遇到的一個問題是,因爲樹葉和複合材料的處理方式是相同的,並且複合材料可能由樹葉和複合材料組成,所以在向複合材料發出命令時,對象可能會多次運行。使用複合設計模式對不同類型的對象進行操作,是否有辦法防止對象被多次操作?
例如,複合組1包含對象A和B.然後,創建一個複合組2,其中包含複合組1和對象A.當複合組2被操作時,對象A將被操作兩次。對於某些應用程序,我猜這不是問題,但對於我的使用,如果對於發佈到組合的任何命令,唯一對象只能運行一次,我會喜歡它。
有沒有一種慣用的方法來處理這個問題,或者是一些如何防止多次調用對象的成員函數,或者阻止一個對象被多次包含在一個組合中?
-
更新: 通過「慣用的」我的意思是處理這類問題的「傳統」或「接受」的方式。 我想我只是假設/希望這是一個常見的問題,有一個確定的解決方案。
你的問題是對象A有兩個'父母',你想在這裏做什麼?爲什麼這個對象分成兩組?如果必須這樣做,那麼應用操作的標準思路就不會按照您的預期工作。您必須以某種方式記錄您執行「此操作」的對象,並且只在對象上執行,如果沒有。 – 2010-12-10 12:01:39
我想要實現的是不僅從單個對象創建組的靈活性,而且還從對象和現有組的任意組合創建組 - 基本上,複合模式的用途就在於,能夠將葉子和複合材料同樣處理通過組件接口? – zebraman 2010-12-10 17:20:42