代码
基于Qt5.9+mingw32
#include <QCoreApplication>
#include <QList>
#include <QDebug>
///NOTE:3适配器模式的例子--20180910
///适配器的功能就是将本来没有某项功能的类加上其它类的功能
///类适配器模式将两个类共同继承,使没有某功能的类可以用其它类的功能
///对象适配器模式将没有某项功能的类派生出新类,直接加入其它类对象的功能
/// 还有一种适配器,直接写一个适配器类来修改不同适配对象,需要加新功能的类只要选择不同的适配器就行了
//构造一个棍子类,想要拥有射击功能但是并没有
class Stick
{
public:
virtual ~Stick() {}
virtual void tryShoot() {}
};
//有一个弓类,可以射击
class Bow
{
public:
void shoot()
{
qDebug() << "I'm shooting!";
}
};
//构造一个类适配器类,将弓类的射击功能赋予棍子类
class ClassAdapter: public Stick, public Bow
{
public:
virtual ~ClassAdapter() {}
void tryShoot()
{
this->shoot();
}
};
//构造一个对象适配器类,将弓类的射击功能赋予棍子类
class ObjectAdapter: public Stick
{
private:
Bow *bow;
public:
virtual ~ObjectAdapter()
{
delete bow;
}
ObjectAdapter()
{
bow = new Bow();
}
void tryShoot()
{
bow->shoot();
}
};
int main(int, char **)
{
///类适配器模式测试
Stick *stick = new ClassAdapter();
stick->tryShoot();//现在棍子对象也能射击了
///对象适配器模式测试
Stick *stick2 = new ObjectAdapter();
stick2->tryShoot();//现在棍子对象也能射击了
getchar();
delete stick;
delete stick2;
}