#include <iostream.h>
//桥接模式
//存在一种分类,其中有不同的个体,这些个体是互斥的
//但这些个体将要表现出基本一致的行为
//由于这些个体的互斥性,这些行为在通常意义上将表现出个体唯一性
//若使用工厂模式,这使得这些个体增加,整个体系会增加更剧烈
//由于考虑将这些个体的行为单独提取出,向外提供统一的接口
//这些行为作为对象将聚合到个体内部,从外界看,对象具有对个体认知的唯一性
class Action //行为的统一抽象
{
public:
Action(){}
~Action(){}
public:
virtual void show() = 0;
};
class Book : public Action
{
public:
Book(){}
~Book(){}
public:
virtual void show()
{
cout << "使用阅读器" << endl;
}
};
class Game : public Action
{
public:
Game(){}
~Game(){}
public:
virtual void show()
{
cout << "使用游戏功能" << endl;
}
};
class mobile //手机类 具有普遍性
{
protected:
Action *act; //行为是装载进入的 可随时加入和卸出
public:
mobile(){}
~mobile(){}
public:
void SetAc(Action *act)
{
this->act = act;
}
void SetAcNull()
{
if(NULL != act)
delete act;
act = NULL;
}
virtual void show() = 0;
};
class Nmobile : public mobile //同Mmobile互斥
{
public:
Nmobile(){}
~Nmobile(){}
public:
void show()
{
this->act->show();
}
};
class Mmobile : public mobile
{
public:
Mmobile(){}
~Mmobile(){}
public:
void show()
{
this->act->show();
}
};
void main()
{
mobile *Nm = new Nmobile();
Action *act = new Game();
Nm->SetAc(act);
Nm->show();
Nm->SetAcNull();
mobile *Mm = new Mmobile();
act = new Game();
Mm->SetAc(act);
Mm->show();
Mm->SetAcNull();
}