天天看點

擴充卡模式Adapter-概述

意圖

将一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不相容

而不能一起工作的那些類可以一起工作。

别名

包裝器Wrapper

動機

有時,為複用而設計的工具箱類不能夠被複用的原因僅僅是因為它的接口與專業應用領

域所需要的接口不比對。

适用性

  • 你想使用一個已經存在的類,而它的接囗不符合你的需求。
  • 你想建立一個可以複用的類,該類可以與其他不相關的類或不可預見的類(即那些接口可能不一定相容的類)協同工作。
  • 僅适用于對*Adapter)你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以比對它們的接口。對象擴充卡可以适配它的父類接口。

标準結構

擴充卡模式Adapter-概述

參與者

Target(Shape)

一定義Client使用的與特定領域相關的接口0

·Client(DrawingEditor)

一與符合Target接口的對象協同。

·Adaptee(TextView)

一定義一個已經存在的接口,這個接口需要适配。

.Adapter(TextShape)

一對Adaptee的接口與Target接口進行适配

效果

類擴充卡和對象擴充卡有不同的權衡。

類擴充卡

·用一個具體的Adapter類對Adaptee和Target進行比對。結果是當我們想要比對一個類以

及所有它的子類時,類Adapt“将不能勝任工作。

.使得Adapter可以重定義Adaptee的部分行為,因為Adapter是Adaptee的一個子類。

·僅僅引人了一個對象,并不需要額外的指針以間接得到adaptee。

對象擴充卡

.允許一個Adapter與多個Adaptee—即Adaptee本身以及它的所有子類(如果有子類的話)

一同時工作。Ad即斷也可以一次給所有的Adap虻e添加功能。

·使得重定義Adap艹的行為比較困難。這就需要生成Adaptee的子類并且使得Adapter引用

這個子類而不是引用Adaee本身。

其他需要考慮的一些因素:

Adapter的比對程度

可插入的Adapter

使用雙向擴充卡提供透明操作

繼續閱讀