設計模式c++學習筆記之八(adapter介面卡模式)
介面卡模式,使用之處比較特殊,不屬於常規設計模式,主要用於不同系統之間的處理。是將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。也是乙個比較簡單的模式,直接上**了。
看**:
8.1.解釋
main(),主程式
iuserinfo,本系統內介面
cuserinfo,本系統內實現類
iouteruser,外系統介面
couteruser,外系統實現類
couteruserinfo,本系統內適配類
說明:couteruserinfo實現iuserinfo介面,將外部系統實現類couteruser轉換成本系統內的介面iuserinfo。使用外部資料跟使用本系統內部資料一樣。
注意:couteruserinfo繼承了iuserinfo,如果同時繼承了couteruser則是類介面卡。如果couteruserinfo只是使用了couteruser則是物件介面卡。
系統內部的實體介面
#pragma once
#include
using std::string;
class iuserinfo
virtual ~iuserinfo(void)
virtual string getusername() = 0;
virtual string gethomeaddress() = 0;
virtual string getmobilenumber() = 0;
virtual string getofficetelnumber() = 0;
virtual string getjobposition() = 0;
virtual string gethometelnumber() = 0;
};系統內部實體類
#pragma once
#include "iuserinfo.h"
#include
using std::string;
class cuserinfo :
public iuserinfo
;#include "stdafx.h"
#include "userinfo.h"
#include
using std::cout;
using std::endl;
using std::string;
cuserinfo::cuserinfo(void)
cuserinfo::~cuserinfo(void)
string cuserinfo::getusername()
string cuserinfo::gethomeaddress()
string cuserinfo::getmobilenumber()
string cuserinfo::getofficetelnumber()
string cuserinfo::getjobposition()
string cuserinfo::gethometelnumber()
外部系統實體介面
#pragma once
#include "outeruserbaseinfo.h"
#include "outeruserhomeinfo.h"
#include "outeruserofficeinfo.h"
class iouteruser
~iouteruser(void)
couteruserbaseinfo * getuserbaseinfo();
couteruserhomeinfo * getuserhomeinfo();
couteruserofficeinfo * getuserofficeinfo();
};外部系統實體類
#pragma once
#include "outeruserbaseinfo.h"
#include "outeruserhomeinfo.h"
#include "outeruserofficeinfo.h"
class iouteruser
~iouteruser(void)
couteruserbaseinfo * getuserbaseinfo();
couteruserhomeinfo * getuserhomeinfo();
couteruserofficeinfo * getuserofficeinfo();
};#include "stdafx.h"
#include "outeruser.h"
#include "outeruserbaseinfo.h"
#include "outeruserhomeinfo.h"
#include "outeruserofficeinfo.h"
couteruser::couteruser(void)
couteruser::~couteruser(void)
couteruserbaseinfo * couteruser::getuserbaseinfo()
couteruserhomeinfo * couteruser::getuserhomeinfo()
couteruserofficeinfo * couteruser::getuserofficeinfo()
#pragma once
#include
using std::cout;
using std::endl;
using std::string;
class couteruserbaseinfo
~couteruserbaseinfo(void)
string getusername()
string getmobilenumber()
};#pragma once
#include
using std::cout;
using std::endl;
using std::string;
class couteruserhomeinfo
~couteruserhomeinfo(void)
string gethomeaddress()
string gethometelnumber()
};#pragma once
#include
using std::cout;
using std::endl;
using std::string;
class couteruserofficeinfo
~couteruserofficeinfo(void)
string getofficetelnumber()
string getjobposition()
};由iuserinfo介面派生的實體類,並引入外部系統實體的例項
#pragma once
#include "iuserinfo.h"
#include "outeruser.h"
#include
using std::string;
class couteruserinfo :
public iuserinfo
;#include "stdafx.h"
#include "outeruserinfo.h"
#include "outeruserbaseinfo.h"
#include "outeruserhomeinfo.h"
#include "outeruserofficeinfo.h"
#include
using std::cout;
using std::endl;
using std::string;
couteruserinfo::couteruserinfo(void)
couteruserinfo::~couteruserinfo(void)
string couteruserinfo::getusername()
string couteruserinfo::gethomeaddress()
string couteruserinfo::getmobilenumber()
string couteruserinfo::getofficetelnumber()
string couteruserinfo::getjobposition()
string couteruserinfo::gethometelnumber()
使用方法
#include "stdafx.h"
#include "iouteruser.h"
#include "iuserinfo.h"
#include "userinfo.h"
#include "outeruserinfo.h"
void doit()
delete pyourgirl;
}void nowdoit()
delete pyourgirl;
}int _tmain(int argc, _tchar* argv)
設計模式之介面卡模式 Adapter
設計模式之介面卡模式 adapter 將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。源 target 這是客戶所期待的介面,目標是可以是具體的或者抽象的類,也可以是介面 class target adaptee 需要適配的類 ...
設計模式之介面卡模式(Adapter)
設計模式之介面卡模式 adapter 我想要是說介面卡模式,提一下 電壓 耳機 充電器 和 usb 的例子應該是比較恰當的了。就說說自己的親身經歷,我原來的手機是nokia5730。後來也不知道有沒有國行,但是不推薦大家買這款手機,不適用的哈。我買的時候只有港貨,可是大家知道的啊,香港的充電器和我們...
設計模式之介面卡模式(Adapter)
概述 將乙個類的介面轉換成使用者希望的另外乙個介面,adapter模式使得原本由於介面不相容而不能一起工作的那些類可以在一起工作。兩種實現方式 1.類的介面卡模式 2.物件的介面卡模式 類的介面卡模式的uml圖,如下 類的介面卡模式把適配的類的api轉換成為目標類的api。上圖設計的角色有 目標角色...