前言
在面向?qū)ο筌浖O(shè)計(jì)中,很多時(shí)候新功能需要新的接口來支撐狰腌,但是已有的類和新的接口之間不兼容的情況非常普遍毕匀。由此程序員們?yōu)樗业搅私鉀Q方案,這個(gè)方案被稱為適配器模式(Adapter Pattern)癌别。
什么是適配器
適配器模式作為兩個(gè)不兼容的接口之間的橋梁皂岔,它將一個(gè)類的接口轉(zhuǎn)換成客戶端希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作
類適配器和對(duì)象適配器
實(shí)現(xiàn)適配器的方法有兩種展姐,第一種是通過繼承來適配兩個(gè)接口躁垛,這稱為類適配器。
在 Objective-C 可以通過實(shí)現(xiàn)接口或協(xié)議圾笨,同時(shí)繼承父類來實(shí)現(xiàn)類適配教馆。
適配器
Target 指目標(biāo)接口。 Adaptee 指被適配者擂达。request 意為操作行為土铺。
類適配器與對(duì)象適配器的對(duì)比
類適配器 | 對(duì)象適配器 |
---|---|
只針對(duì)單一的具體Adaptee類, 把Adaptee適配到Target | 可以適配多個(gè)Adaptee及其子類 |
易于重載Adaptee的行為,因?yàn)?是通過直接的子類化進(jìn)行的適配 | 難以重載Adaptee的行為悲敷,需要 借助于子類的對(duì)象而不是Adaptee本身 |
只有一個(gè)Adapter對(duì)象究恤,無需額 外的指針間接訪問Adaptee | 需要額外的指針以間接訪問 Adaptee并適配其行為 |
什么時(shí)候使用適配器
- 已有類的接口和需求不匹配
- 想要一個(gè)可復(fù)用的類,該類能夠同帶有不兼容接口的其它類協(xié)作
- 需要適配一個(gè)類的幾個(gè)不同子類后德,可以使用對(duì)象適配器(委托)來適配其父類的接口
適配器的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 可以讓任何兩個(gè)沒有關(guān)聯(lián)的類一起運(yùn)行部宿。
- 提高了類的復(fù)用。
- 增加了類的透明度瓢湃。
- 靈活性好理张。
缺點(diǎn)
- 過多地使用適配器,會(huì)讓系統(tǒng)非常零亂绵患,不易整體進(jìn)行把握雾叭。
總結(jié)
顯然,委托(Delegate)模式屬于對(duì)象適配器落蝙,盡管委托模式本身可以達(dá)到多種目的织狐,不只用于適配器模式,但是它對(duì)適配器起了重要的啟發(fā)作用掘殴。