该模式也相对简单。其主要处理的是这类问题:当系统或某些模块已经成形后,突然需要增加某些功能。而这些功能的增加
在现有的对象中,暂时没有办法处理。同时,却发现,该功能,其实另一模块的对象却可以处理的了。因此,就希望能够在不修改原
有操作及系统结构的情况下,就自然而然地将该功能实现出来。此时,就可以使用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:
...
};
以下调用就不写了,你懂得的。