Swift-橋接模式
橋接模式定義將抽象部分與實現部分分離,使它們都可以獨立的變化.熟悉橋接模式之前需要了解兩個概念類的功能層次結構和類的實現層次結構.
類的功能實現層次結構是指如果在專案中新增功能,部分功能專案已經實現,通過新增子類繼承來實現新增功能,有可能出現類的層次過多的情況.
類的實現層次結構是指父類通過抽象方法定義介面,新增功能的時候新增抽象方法,子類負責實現具體的實現.
抽象(Abstraction):定義抽象介面,該介面中包含實現具體行為、具體特徵的Implementor介面.
改善的抽象(RefinedAbstraction):繼承自Abstraction的子類,在Abstraction角色基礎上增加新功能.
實現者(Implementor):定義用於實現Abstraction行為的介面.
具體實現者(ConcreteImplementor):實現Implementor的介面.
以空調和顯示器為例子:
class AirConditioner {
var monitor:Monitor?
init(monitor:Monitor) {
self.monitor = monitor
}
func display() { }
}
class HaierAirConditioner: AirConditioner {
override func display() {
self.monitor?.showTemperature()
}
}
class Monitor {
func showTemperature() { }
}
class TemperatureMonitor:Monitor {
override func showTemperature() {
print("FlyElephant---風和日麗,萬里無雲")
}
}
let airConditioner:HaierAirConditioner = HaierAirConditioner(monitor: TemperatureMonitor())
airConditioner.display()
適用場景:
① 當一個物件有多個變化因素時,可以考慮使用橋接模式,通過抽象這些變化因素,將依賴具體實現修改為依賴抽象.
② 當一個物件的多個變化因素可以動態變化,不希望影響客戶端的程式使用時可以考慮橋接模式.
③ 如果使用繼承的實現方案,會導致產生很多子類,任何一個變化因素都需要產生多個類來完成,就要考慮橋接模式.
相關文章
- 橋接模式橋接模式
- JS 橋接模式JS橋接模式
- 設計模式-橋接模式設計模式橋接
- 設計模式:橋接模式設計模式橋接
- JavaBridgePattern(橋接模式)Java橋接模式
- 橋接模式(Bridge)橋接模式
- 08_橋接模式橋接模式
- Java設計模式-橋接模式Java設計模式橋接
- 結構型模式:橋接模式模式橋接
- 小白設計模式:橋接模式設計模式橋接
- 設計模式之橋接模式設計模式橋接
- 設計模式(八)——橋接模式設計模式橋接
- 設計模式之【橋接模式】設計模式橋接
- javascript設計模式橋接模式JavaScript設計模式橋接
- 結構型模式----橋接模式模式橋接
- 設計模式(十二):橋接模式設計模式橋接
- 設計模式之橋接設計模式橋接
- 設計模式(七)橋接設計模式橋接
- PHP 設計模式之橋接模式PHP設計模式橋接
- GoLang設計模式19 - 橋接模式Golang設計模式橋接
- Java設計模式(7)----------橋接模式Java設計模式橋接
- 設計模式 | 橋接模式(bridge)設計模式橋接
- 9.設計模式-橋接模式設計模式橋接
- 極簡設計模式-橋接模式設計模式橋接
- Python設計模式-橋接模式Python設計模式橋接
- 大話設計模式—橋接模式設計模式橋接
- 橋接模式(c++實現)橋接模式C++
- c#橋接模式詳解C#橋接模式
- 設計模式之旅12--橋接模式設計模式橋接
- Java設計模式之(六)——橋接模式Java設計模式橋接
- 23種設計模式(9)- 橋接模式設計模式橋接
- 設計模式系列 11-- 橋接模式設計模式橋接
- Android設計模式之橋接模式Android設計模式橋接
- java設計模式之一 橋接模式Java設計模式橋接
- 我學設計模式 之 橋接模式設計模式橋接
- 設計模式:橋接模式及程式碼示例、橋接模式在jdbc中的體現、注意事項設計模式橋接JDBC
- 設計模式學習-裝飾模式,橋接模式設計模式橋接
- c++涉及模式 橋接模式(bridge Pattern)C++模式橋接