实现
和其他很多模式一样,学习设计模式的重点是学习每种模式的思想,而不应拘泥于它的某种具体结构图和实现。因为模式是灵活的,其实现可以是千变万化的,只是所谓万变不离其宗。在STL中大量运用了Adapter模式,象function adapter、iterator adpter,它们与这里说的adapter结构并不一样,但思想是一样的。
1、示例代码
(1)class adapter
namespace DesignPattern_Adapter
{
// class Adaptee
class Adaptee
{
public:
void SpecialRequest() {}
} ;
// class Target
class Target
{
public:
virtual void Request() = 0 ;
} ;
// class Adapter
class Adapter : public Target, private Adaptee
{
public:
virtual void Request() { SpecialRequest() ; }
} ;
}
客户端代码:
{
using namespace DesignPattern_Adapter ;
Target *p = new Adapter() ;
p->Request() ; //实际上调用的是Adaptee::SpecialRequest()
就比如
类的成员函数
在类中说明函数原型;
可以在类外给出函数体,形成内联成员函数;
也可以直接在类中给出函数体,形成内联成员函数;
允许声明重载函数和带默认参数值的函数。
内联成员函数
为了提高运行时的效率,对于较简单的函数可以声明为内联形式。
内联函数体中不要有复杂结构(如循环语句和switch语句)。
在类中声明内联成员函数的方式:
#将函数体放在类的声明中。
#使用inline关键字。
nonpointer
0,代表普通的指针,存储着Class、Meta-Class对象的内存地址
1,代表优化过,使用位域存储更多的信息
has_assoc
是否有设置过关联对象,如果没有,释放时会更快
has_cxx_dtor
是否有C++的析构函数(.cxx_destruct),如果没有,释放时会更快
总之就是这样进行一段操作方式希望可以帮助到你们!