該模式也相對簡單。其主要處理的是這類問題:當系統或某些模塊已經成形后,突然需要增加某些功能。而這些功能的增加
在現有的對象中,暫時沒有辦法處理。同時,卻發現,該功能,其實另一模塊的對象卻可以處理的了。因此,就希望能夠在不修改原
有操作及系統結構的情況下,就自然而然地將該功能實現出來。此時,就可以使用Adapter來處理之。(注:在此,我們強調的是不
去修改原有系統的結構的情況下)。
就上述問題,Adapter模式有兩種解決方法。一種是通過對象適配來解決。另一種是通過類適配來解決。所謂的對象適配,指
的是,通過引入具有我們需要功能接口的對象(設類為X),在實現處理過程中,我們使用的是X的功能接口,以此來達到我們的需求。
而類適配,則指的是,產生一個新類,讓該新類,繼承自X類,則自然,該新類就會有了X的相關接口。下面看下,這兩種適配的代碼。
對象適配
class X
{
public:
...
virtual func(...);
};
class ObjAdapterObject : public ...
{
public:
void func(...)
{
if (m_pXObj != NULL)
m_pXObj->func(...);
}
private:
X* m_pXObj;
};
類適配
class X的聲明及定義同上。
class ClassAdapterObject: public X, public ...
{
public:
...
};
以下調用就不寫了,你懂得的。