我對示例複合類圖中通常看到的兩個操作有疑問。
* GetDescendents
* GetChild(INT)複合圖案設計問題
一個常見的例子是文件和目錄,我也有堅持。假設感興趣的操作是大小,所以文件具有實際大小並且目錄具有從GetDescendents的遞歸迭代派生的大小。到現在爲止還挺好。我的問題與客戶使用GetDescendents有關。假設你需要某個目錄中的文件,這些文件是某些給定操作的圖像。因此,在實踐中,您使用GetDescendents和Children的一些組合來返回imageFiles(取決於客戶端是想要所有嵌套的imageFiles還是僅在根級別)。
所以問題一,是不是你可能有一個組合的GetImageFiles方法,而不是讓客戶端弄清楚它?假設是這樣的,GetDescendents是否可以在組合之外公開給客戶端調用者(如ImageViewer)?
關於GetChild(int)的第二個問題;是一個順序位置索引返回一個單一的孩子?深入GetDescendents的水平?什麼是客戶如何使用該方法的例子?
乾杯,
Berryl
沒錯。我的問題是,它是否有助於將兒童操作暴露給不屬於構圖的客戶,或者至少與其構成非常密切的關係 - 也就是說,它們是內部操作來生成客戶端消費品,如GetFilesOfType ()。 – Berryl 2011-03-24 15:19:51
@Berryl:這取決於你的班級代表什麼。 「模式」只是一個實現細節,重要的是「概念」。 – 2011-03-24 15:23:22