將乙個類的介面轉換成客戶希望的另乙個介面,使得原本因介面不相容而不能一起工作的 那些類可以一起工作。
比如 stl 中乙個演算法需要兩個引數,但呼叫時需要乙個引數,中間就需要乙個介面卡去把兩個引數的演算法適配成乙個引數的。
例如,for_each 這裡呼叫時是只有乙個引數的,如果我們函式物件過載的括號運算子是兩個引數的,由於引數不匹配,是呼叫不了的。
因此,需要用介面卡將其進行轉換,於是定義目標介面
定義介面卡,這裡的100寫死
呼叫由於上面的 100 寫死,於是定義乙個返回介面卡的函式
修改介面卡
這樣,就將寫好的介面適配成符合要求的介面了
#include
#include
#include
#include
using
namespace std;
struct myprint };
struct target
;struct adapter :
public target
virtual
void
operator()
(int v)
myprint print;
int _param;};
adapter mybind2nd
(int v)
intmain()
for_each
(v.begin()
, v.
end(),
mybind2nd(10
));return0;
}
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式 介面卡模式
01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...