桥接模式

 

#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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值