設計模式 17 介面卡模式

2021-07-04 13:25:34 字數 2329 閱讀 9251

介面卡模式:將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

例項:電源介面卡

何時使用:系統的資料和行為都正確,但是介面不符時,應該考慮用電源介面卡。目的使原有控制範圍之外的乙個原有物件與某個介面匹配。

介面卡模式用於:希望復用一些現存的類,但是介面又與服用環境要求不一致的情況。

型別:類介面卡模式和物件介面卡模式

何時使用:想使用乙個已經存在的類,但如果它的介面和你的方法不同時,考慮用

兩個類所做的事情相同或相似,但是具有不同的介面時使用它。

客戶端可以統一呼叫統一介面,更簡單。

雙方都不太容易修改的時候再使用介面卡模式適配。

/*關鍵:

sequence封裝了兩個介面,然後讓子類stack和queue去實現;而在子類stack和queue中聚合了

雙端佇列的物件,用雙端佇列的方法藉此來實現他們的壓入和彈出功能

*/void process()

int main(int argc,char* argv)

sequence.h

#ifndef sequence_h

#define sequence_h

class sequence

;#endif

sequence.cpp

#include "sequence.h"

sequence::sequence(void)

sequence::~sequence(void)

queue.h

#ifndef queue_h

#define queue_h

#include "sequence.h"

#include "deque.h"

class deque;

class queue :

public sequence

;#endif

queue.cpp

#include "queue.h"

queue::queue(void)

queue::~queue(void)

//佇列從尾部彈入

void queue::push(int x)

//佇列從頭部彈出

void queue::pop()

stack.h

#ifndef stack_h

#define stack_h

#include "sequence.h"

#include "deque.h"

//class deque;

class stack :

public sequence

;#endif

stack.cpp

#include "stack.h"

stack::stack(void)

stack::~stack(void)

//棧從後面壓入

void stack::push(int x)

//棧從後面彈出

void stack::pop()

deque.h

#ifndef deque_h

#define deque_h

class deque

;#endif

deque.cpp

#include "deque.h"

#include using namespace std;

deque::deque(void)

deque::~deque(void)

void deque::push_back(int x)

void deque::push_front(int x)

void deque::pop_back()

void deque::pop_front()

大話設計模式17 介面卡模式

概念 將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。dp 使用場景 void 進攻 void 防守 class translator public player translator void attack override ...

Java 設計模式 17 介面卡模式

介面中定義了多個方法 public inte ce myinte ce 抽象類中空實現介面中的方法 public abstract class myinte ceimpl implements myinte ce overrie public void function2 overrie publi...

17 介面卡模式

package adaptermode 介面卡模式 將乙個類的介面轉換成客戶希望的另外乙個介面 adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作 姚明打籃球 剛去nba 聽不懂外語怎麼辦 public class adaptermode 球員抽象類 abstract cla...