1. 程式人生 > >大戰設計模式【16】—— 橋接模式

大戰設計模式【16】—— 橋接模式

操作 sign log 及其 hub www. .cn crete bstr

橋接模式(Bridge)

設計模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

一、定義

將抽象部分與其實現部分分離,使得他們都可以獨立地變化。它是一種對象結構型模式,又稱為接口模式。

二、結構

Abstraction(抽象類):用於定義抽象類的接口,其中定義了一個實現了Implementor接口的對象並可以維護該對象,它與Implementor之間具有關聯關系,它既可以包含抽象業務方法,也可以包含具體業務方法。

RefinedAbstratction(擴充抽象類):擴充由Abstraction定義的接口,通常情況下他不再是抽象類而是具體類,實現了在Abstraction中聲明的抽象業務方法,在RefinedAbstraction中可以調用在Implementor中定義的業務方法。

Implementor(實現類接口):定義實現類的接口,一般而言,它不與Abstraction的接口一致。它只提供基本操作,而Abstraction定義的接口可能會做更多更復雜的操作。

ConcreteImplementor(具體實現類):具體實現Implementor接口,在不同的ConcreteImplementor中提供基本操作的不同實現,在程序運行時,ConcreteImplentor將替換其父類對象,提供給抽象類具體的業務操作方法。

三、優點

分離抽象接口及其實現部分

取代多層繼承方案

提高了系統可擴展性

四、缺點

增加了系統的理解和設計難度

要求正確識別出系統中兩個獨立變化的維度

五、應用場景

一個類存在兩個(或者多個)獨立變化的維度,而且這兩個(或者多個)維度都需要獨立進行擴展。

不希望使用繼承或因為多層繼承而導致系統中類的個數急劇增加。

一個系統需要在抽象類和具體類之間增加更多的靈活性,避免在兩個層次之間建立靜態繼承關系,通過橋接可以使它們在抽象層建立一個關聯關系。

六、個人總結

1、橋接模式:一個抽象包含另一個抽象對象從而分離抽象和實現,讓其獨立擴展。

2、當需要用不同的方式改變接口和實現的時候,你會發現橋接模式很好用。

參考博客:http://www.cnblogs.com/edisonchou/p/6978351.html

大戰設計模式【16】—— 橋接模式