我將下圖中顯示的示例與我正在處理的實際項目進行了類比。我正在用C++實現這個項目。在獲取界面時防止暴露於課堂
這個例子的主要點是我有一個FruitGarden
其中我知道它總是包含一個AppleTree
。在FruitGarden
的函數StartHarvesting
中,應該檢查AppleTree
是否準備好收穫。爲此,我創建了一個接口類。
我現在使用接口的方式是通過在Vegitation
中實現函數GetTreePointer
並將其轉換爲IFoodTree
(並檢查NULL)。我在這裏看到的問題是,我正在將我的整棵樹展示給外部世界(通過執行GetTreePointer
),從而啓用其他公用功能的調用,這些功能不打算在Vegitation
之外使用。
我的主要問題是:什麼是最好的方式來獲得接口IFoodTree
這是指向AppleTree
?
被編輯爲使其更具可讀性,但由於我無法更新UML,所以我已經離開了「Vegitation」(=> Vegetation)。 – MSalters