[英]Decorator design pattern using inheritance vs interfaces
我想使用 inheritance( Decorator extends Component
)來實現裝飾器設計模式,因為我需要訪問組件 class 的受保護字段/方法。
問題是組件 class 代表一種算法,它在構造時執行一些預處理並保存大量數據。 現在,每次我要裝飾一個組件時,我都會創建一個新的裝飾器實例,這將需要構造一個新的(無用的)組件實例來執行不需要的計算並保存不需要的數據。
我想使用接口而不是 inheritance 但是我將無法訪問組件的受保護信息。
在擴展組件 class 時,我是否擔心會浪費資源? 如果是這樣,我怎樣才能避免它而不會失去對我需要的信息的訪問權限?
最后一點:我可以創建為它提供“虛擬”數據的裝飾器實例,以便它執行最少的計算,但這個解決方案感覺很混亂。
謝謝你。
我不確定這是否會算作裝飾器模式。 聽起來更像是普通的舊 inheritance。
在擴展組件 class 時,我是否擔心會浪費資源?
顯然取決於你浪費了多少資源。
如果是這樣,我怎樣才能避免它而不會失去對我需要的信息的訪問權限?
您也許可以通過擴展組件並添加訪問所需受保護部分的方法來“打開” Component
。 然后使用接口和組合來為這個新的 class 實現一個裝飾器。
顯然,您的Component
class 並非設計為“裝飾”。 你有沒有想過重構它?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.