簡體   English   中英

多個 Inheritance 和橋接模式

[英]Multiple Inheritance and Bridge Pattern

使用多個 inheritance 實現橋接模式有什么意義? GoF 在他們的《設計模式》一書中解釋它的方式使它看起來與意圖有悖常理。

另外,為什么多個 inheritance 使實現不符合真正的橋接模式?

非常感謝示例。

這一切都在實施問題 #4 中進行了解釋。

使用多個 inheritance 您可以在 C++ 中使用多個 inheritance 來組合接口及其實現。 例如, class 可以公開繼承Abstraction並私有繼承Concretelmplementor 但是因為這種方法依賴於 static inheritance,所以它將一個實現永久地綁定到它的接口上。 因此,您不能實現具有多重繼承的真正 Bridge——至少在 C++ 中不能。

所以...

使用多個 inheritance 實現橋接模式有什么意義?

你不能。

GoF 在他們的《設計模式》一書中解釋它的方式使它看起來與意圖有悖常理。

這是。 這就是為什么你不能這樣做。

為什么多個 inheritance 使實施不符合真正的橋接模式?

“因為這種方法依賴於 static inheritance,”[p. 156] 和“繼承將實現永久綁定到抽象,這使得獨立修改、擴展和重用抽象和實現變得困難。” [頁。 151]...這是橋梁的動機。


老實說,我不完全確定為什么 GoF 覺得有必要在橋梁章節中提出多個 inheritance,但談話似乎是這樣的 go。

  • GoF :對於通常使用 inheritance 解決的特定問題,橋接模式是一種更靈活的替代方案。
  • 假設的讀者:好的,但是如果我使用多個inheritance 怎么辦,嘿?
  • GoF :還是沒有 還是inheritance 還是static,死板的關系。 Inheritance 是 inheritance。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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