1
A
回答
2
在.NET中不可能繼承sealed class。所以,如果你想創建繼承你密封類的裝飾器,那麼回答是 - 這是不可能的。
public class Decorator : SealedClass // not possible
如果密封類實現了一些接口或繼承的一些基礎類,那麼你可以創建裝飾它繼承相同的類/接口。裝飾師看起來不像你的班級給客戶,但你可以用它來裝飾你的班級。
public sealed class SealedClass : InterfaceA
public class Decorator : InterfaceA
另一種選擇 - 創建一些新的接口(它看起來可能與您的密封類接口完全相同)併爲此接口實現裝飾器。然後爲此接口創建密封類適配器。客戶將使用您的新界面。你將能夠裝飾適配器
public class Decorator : InterfaceB // same members as SealedClass have
public class Adapter : InterfaceB
{
private SealedClass adaptee;
public Adapter(SealedClasss adaptee)
{
this.adaptee = adaptee;
}
public int Member1()
{
return adaptee.Member1();
}
// etc for each member of SealedClass
}
相關問題
- 1. 擴展密封類
- 2. 裝飾設計模式
- 3. 使用版本庫設計模式和裝飾器設計模式來進行
- 4. 在擴展類(裝飾器模式)中重寫構造函數
- 5. 使用裝飾設計模式通過裝飾單個鏈接列表來創建雙向鏈接列表
- 6. 如何通過Java的加密擴展來加密PGP消息?
- 7. 瞭解C裝飾器設計模式#
- 8. 裝飾設計模式問題?
- 9. 裝飾設計模式與繼承?
- 10. java中的裝飾設計模式
- 11. 爲什麼在裝飾設計模式命名爲「裝飾」?
- 12. 封裝屬性設計模式
- 13. 擴展方法密封類在C#
- 14. 在Python中擴展裝飾類
- 15. 用TypeScript中的裝飾器擴展類
- 16. 如何擴展庫的裝飾器?
- 17. 裝飾者模式 - 如何一次裝飾兩種類型
- 18. 通過擴展來模擬繼承
- 19. 封裝設計
- 20. 擴展Android活動的設計模式?
- 21. 工廠設計模式擴展
- 22. python:通過將裝飾器定義爲類來裝飾一個類
- 23. 緊密封裝類
- 24. 通過裝飾
- 25. 裝飾與戰略模式(vs?)擴展功能
- 26. 如何用類裝飾器來裝飾「可調用」類?
- 27. 擴展「類」並通過模塊導出
- 28. 如何通過反射擴展Java類?
- 29. 如何通過添加另一個規則來擴展業務邏輯而不使用設計模式
- 30. 使用裝飾器和通過繼承擴展子類有什麼區別?
你的密封類是否實現了一些接口,或者有一些基類?這裏很高興看到類的定義 –