接觸介面卡模式是再stl中的和queue還有priority_queue都使用到了介面卡模式,那什麼是介面卡模式呢?
設配器模式:將乙個介面轉換成客戶希望的另乙個介面,使介面不相容的那些類可以一起工作。別名又叫包裝器。設配器模式既可以作為類結構型模式,也可以作為物件結構型模式。
在介面卡模式中,我們通過增加乙個新的介面卡類來解決介面不相容的問題,使得原本沒有任何關係的類可以協同工作。
根據介面卡類與適配者類的關係不同,介面卡模式可分為物件介面卡和類介面卡兩種,在物件介面卡模式中,介面卡與適配者之間是關聯關係;在類介面卡模式中,介面卡與適配者之間是繼承(或實現)關係。
比如我們在c++的stl中stack就是介面卡,通過我們的deque類來實現我們的stack類。這裡就可以分清角色的關係了。
stack
:就是乙個介面卡類,他是呼叫另乙個介面,作為乙個轉換器,對我們的deque
(deque
就是乙個適配者類:適配者即被適配的角色,他定義了乙個已經存在的介面,這個介面需要適配,適配者類一般使乙個具體的類,包含了一些業務方法。比如我們deque
作為適配者的時候我們不能直接使用deque
,而是使用deque
具體的類才行)和目標物件(目標抽象類定義客戶所需要的介面,可以使乙個抽象類或者使乙個具體的實現類,比如我們的stack
就是乙個目標抽象類的具體類)進行適配,介面卡類使介面卡模式的核心,在物件介面卡中,他通過繼承目標抽象類並關聯乙個適配者類。
類介面卡**
物件介面卡**
c++簡單設配器
#ifndef _adapter_h_
#define _adapter_h_
#include "adaptee.h"
class target ;
class adapter: public target ;
#endif
#include "adapter.h"
target::target()
target::~target()
adapter::adapter():
adaptee(new adaptee())
adapter::~adapter()
void adapter::request()
#ifndef _adaptee_h_
#define _adaptee_h_
class adaptee ;
#endif
#ifndef _adaptee_h_
#define _adaptee_h_
class adaptee ;
#endif
#include "adapter.h"
int main()
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。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...