簡體   English   中英

使用 inheritance 與接口的裝飾器設計模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM