結(jié)構(gòu)型設(shè)計模式-橋接模式

定義

橋接模式是將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化闺鲸。它是一種對象結(jié)構(gòu)型模式,又稱為柄體(Handle and Body)模式或接口(Interface)模式谆棺。

通過提供抽象化和實現(xiàn)化之間的橋接結(jié)構(gòu)疚沐,來實現(xiàn)二者的解耦站玄。


角色

  1. 實現(xiàn)(Implementor):定義具體行為,具體特征的應(yīng)用接口濒旦。

  2. 具體實現(xiàn)(ConcreteImplementor):實現(xiàn)Implementor。

  3. 目標(biāo)接口(Target): 包含實現(xiàn)具體行為再登、具體特征的Implementor接口或者類尔邓。


場景模擬

我們假設(shè)有一座橋,橋左邊為A锉矢,橋右邊為B梯嗽,A有A1,A2沽损,A3等灯节,表示橋左邊的三個不同地方,B有B1绵估,B2炎疆,B3等,表示橋右邊的三個不同地方国裳,假設(shè)我們要從橋左側(cè)A出發(fā)到橋的右側(cè)B形入,我們可以有多重方案,A1到B1缝左,A1到B2亿遂,A1到B3,A2到B1...等等


橋接模式UML 圖

橋接模式UML 圖

代碼

#import <Foundation/Foundation.h>

@protocol Qiao <NSObject>
-(void)targetB;
@end
#import <Foundation/Foundation.h>
#import "Qiao.h"
@interface AreaB1 : NSObject<Qiao>

@end

#import "AreaB1.h"

@implementation AreaB1
-(void)targetB{
    NSLog(@"到達B1");
}
@end
#import <Foundation/Foundation.h>
#import "Qiao.h"
@interface AreaB2 : NSObject<Qiao>

@end

#import "AreaB2.h"

@implementation AreaB2
-(void)targetB{
    NSLog(@"到達B2");
}
@end

#import <Foundation/Foundation.h>
#import "Qiao.h"
@interface AreaA : NSObject
@property (nonatomic,strong) id <Qiao>qiao;
-(void)fromA;
@end

#import "AreaA.h"

@implementation AreaA

@end

#import <Foundation/Foundation.h>
#import "AreaA.h"

@interface AreaA1 : AreaA

@end
#import "AreaA1.h"

@implementation AreaA1
-(void)fromA{
    NSLog(@"來自A1");
}
@end
#import "AreaA1.h"

@implementation AreaA1
-(void)fromA{
    NSLog(@"來自A1");
}
@end

#import "AreaA2.h"

@implementation AreaA2
-(void)fromA{
    NSLog(@"來自A2");
}
@end

測試代碼

 AreaA * A1 = [AreaA1 new];
    AreaA * A2 = [AreaA2 new];
    id<Qiao> B1 = [AreaB1 new];
    id<Qiao> B2 = [AreaB2 new];
    
    A1.qiao = B1;
    [A1 fromA];
    [A1.qiao targetB];
    A1.qiao = B2;
    [A1 fromA];
    [A1.qiao targetB];
    A2.qiao = B1;
    [A2 fromA];
    [A2.qiao targetB];
    A2.qiao = B2;
    [A2 fromA];
    [A2.qiao targetB];

測試結(jié)果

2018-04-08 16:08:23.845952+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 來自A1
2018-04-08 16:08:23.846159+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 到達B1
2018-04-08 16:08:23.846274+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 來自A1
2018-04-08 16:08:23.846371+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 到達B2
2018-04-08 16:08:23.846458+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 來自A2
2018-04-08 16:08:23.846662+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 到達B1
2018-04-08 16:08:23.846759+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 來自A2
2018-04-08 16:08:23.846869+0800 結(jié)構(gòu)型設(shè)計模式-橋接模式[27184:7186863] 到達B2

橋接模式和適配器模式的區(qū)別

適配器模式

適配器模式

橋接模式

橋接模式

從上面的兩個UML 圖就可以看出來渺杉,橋接模式強調(diào)的是一座橋(只有一條路)蛇数。而適配器模式可以算發(fā)出無數(shù)條線路。

由于ios 協(xié)議中是不能包含變量的是越,因此我們只能定義一個基本類耳舅,代替協(xié)議。


借鑒博客
借鑒博客

源代碼地址

下一篇博客
組合模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倚评,一起剝皮案震驚了整個濱河市挽放,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔓纠,老刑警劉巖辑畦,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異腿倚,居然都是意外死亡纯出,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暂筝,“玉大人箩言,你說我怎么就攤上這事』澜螅” “怎么了陨收?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸵赖。 經(jīng)常有香客問我务漩,道長,這世上最難降的妖魔是什么它褪? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任饵骨,我火速辦了婚禮,結(jié)果婚禮上茫打,老公的妹妹穿的比我還像新娘居触。我一直安慰自己,他們只是感情好老赤,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布轮洋。 她就那樣靜靜地躺著,像睡著了一般抬旺。 火紅的嫁衣襯著肌膚如雪砖瞧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天嚷狞,我揣著相機與錄音块促,去河邊找鬼。 笑死床未,一個胖子當(dāng)著我的面吹牛竭翠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薇搁,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斋扰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了啃洋?” 一聲冷哼從身側(cè)響起传货,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宏娄,沒想到半個月后问裕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡孵坚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年粮宛,在試婚紗的時候發(fā)現(xiàn)自己被綠了窥淆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡巍杈,死狀恐怖忧饭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情筷畦,我是刑警寧澤词裤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站鳖宾,受9級特大地震影響吼砂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攘滩,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纸泡。 院中可真熱鬧漂问,春花似錦、人聲如沸女揭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吧兔。三九已至磷仰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間境蔼,已是汗流浹背灶平。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留箍土,地道東北人逢享。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像吴藻,于是被迫代替她去往敵國和親瞒爬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容