Bridge(橋模式)
把抽象層次結(jié)構(gòu)從其實現(xiàn)中分離出來续滋,使其能夠獨立改變肃续。抽象層定義了提供客戶端使用的上層抽象接口续捂。實現(xiàn)層次結(jié)構(gòu)定義了供抽象層次使用的底層接口谒出。實現(xiàn)類的引用被封裝與抽象層的實例中。
比如項目中Web與iOS/android的交互沈自。Web只負(fù)責(zé)一套抽象的接口(Abstraction),在iOS環(huán)境和安卓環(huán)境有不同的實現(xiàn)(Implementor)來實現(xiàn)對應(yīng)的功能辜妓,具體如何實現(xiàn)Web壓根不用管枯途。
VC.m
HCDPhone *phone = [[HCDNokiaPhone alloc]init];
[phone play];
[phone work];
[phone game];
// 抽象層提供抽象接口
HCDNokiaPhone.m
@implementation HCDNokiaPhone
@synthesize gameSoft = _gameSoft;
@synthesize workSoft = _workSoft;
@synthesize playSoft =_playSoft;
-(instancetype)init{
self = [super init];
if (self) {
_gameSoft = [[HCDGameSoftware alloc]init];
_workSoft = [[HCDWorkSoftWare alloc]init];
_playSoft = [[HCDPlaySoftWare alloc]init];
}
return self;
}
-(void)work{
[self.workSoft runXcode];
[self.workSoft runWord];
}
-(void)play{
[self.playSoft runWeixin];
[self.playSoft runQQ];
}
-(void)game{
[self.gameSoft runQQDizhu];
[self.gameSoft runQQMajiang];
}
@end
// 實現(xiàn)層定義了抽象層使用的底層接口
HCDSoftware.h
@protocol HCDSoftware <NSObject>
-(void)runQQ;
-(void)runWeixin;
-(void)runWord;
-(void)runXcode;
-(void)runQQDizhu;
-(void)runQQMajiang;
@end
typedef id<HCDSoftware> HCDSoftware;