大话设计模式C++实现-第22章-桥接模式

2015-01-24 05:33:48 · 作者: · 浏览: 4

一、UML图

\


二、概念

桥接模式(Bridge):将抽象部分与它的实现部分分离,使他们都可以独立地变化。


<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHN0cm9uZz7I/aGiy7XD9zwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz7Oqsqyw7S90KGwx8W908Sjyr2hsaO/PC9zdHJvbmc+PC9wPgo8cD7I58nPy/nKvrXEVU1MzbzW0KOs09DSu7j2vtu6z8/fo6zP8dK71/nHxaOsy/nS1L3QobDHxb3TxKPKvaGxoaM8L3A+CjxwPjxicj4KPC9wPgo8cD48c3Ryb25nPrjFxO694srNo7o8L3N0cm9uZz48L3A+CjxwPsqyw7S90LPpz/PT68v8tcTKtc/Wt9bA66Os1eKyorK7ysfLtaOsyMOz6c/zwODT68bkxcnJ+sDgt9bA66Os0vLOqtXiw7vT0MjOus7S4tLloaPKtc/W1ri1xMrHs+nP88Dg0+vL/LXExcnJ+sDg08PAtMq1z9bX1Ly6tcS21M/zoaM8L3A+CjxwPjxicj4KPC9wPgo8cD48c3Ryb25nPs6qyrLDtNKq08XPyMq508O6z7PJL77bus/UrdTyo788L3N0cm9uZz48L3A+CjxwPqOoMaOpttTP87XEvMyz0LnYz7XKx9TaseDS68qxvs22qNLlusPBy7XEo6zL+dLUzt63qNTZ1MvQ0MqxuMSx5LTTuLjA4LzMs9C1xMq1z9aho9fTwOC1xMq1z9bT68v8tcS4uMDg09C3x7OjvfTD3LXE0sDAtbnYz7WjrNLU1sHT2ri4wODKtc/WtcTIzrrOseS7r7HYyLu74bW81sLX08Dgt6LJ+rHku6+ho7WxxOPQ6NKquLTTw9fTwODKsaOsyOe5+7zMs9DPwsC0tcTKtc/WsrvKyrrPveK+9tDCtcTOyszio6zU8ri4wOCx2NDr1tjQtLvysbvG5Mv7uPzKyrrPtcTA4Mzmu7uho9Xi1tbSwMC1udjPtc/e1sbBy8Hpu+7Q1LKi1+7W1c/e1sbBy7i008PQ1KGjPC9wPgo8cD6jqDKjqdPFz8jKudPDus+zyS++27rP1K3U8tPQ1vrT2sTjsaOz1sO/uPbA4LG7t+LXsKOssqKxu7yv1tDU2rWluPbIzs7xyc+ho9Xi0fnA4LrNwOC8zLPQsuO0zrvhsaOz1r3P0KG55sSjo6yyosfSsrvMq7/JxNzU9rOkzqqyu7/Jv9jWxrXExdPIu7Tzzu+hozwvcD4KPHA+PGJyPgo8L3A+CjxwPjxzdHJvbmc+w6TEv8q508O8zLPQu+HU7LPJwum3s6Ossb7WytSt0vLKx8qyw7Sjvzwvc3Ryb25nPjwvcD4KPHA+vMyz0MrH0rvW1se/8e66z7XEveG5uaGjuLjA4LHko6zX08Dgvs2x2NDr0qqx5KGjy/nS1KOsztLDx9Ta08O8zLPQyrGjrNK7tqjSqtTaysehsGlzLWGhsbXEudjPtcqx1Nm/vMLHyrnTw6Ostviyu8rHyM66zsqxuvK2vMilyrnTw6GjPC9wPgo8cD48YnI+CjwvcD4KPHA+PHN0cm9uZz7LxKGiQyYjNDM7JiM0MzvKtc/WPC9zdHJvbmc+PC9wPgo8cD6jqDGjqUJyaWRnZS5oPC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">#ifndef BRIDGE_H #define BRIDGE_H #include #include //Implementor:此处为手机软件抽象类 class HandsetSoft { public: virtual void Run()=0; }; //ConcreteImplementorA,此处为手机游戏 class HandsetGame:public HandsetSoft { void Run() { std::cout<<"运行手机游戏"< soft=soft; } virtual void Run()=0; }; //RefineAbstraction,此处为手机品N class HandsetBrandN:public HandsetBrand { public: void Run() { soft->Run(); } }; //RefineAbstraction,此处为手机品M class HandsetBrandM:public HandsetBrand { public: void Run() { soft->Run(); } }; #endif

(2)Client.cpp

#include "Bridge.h"
#include 
  
   
#include 
   
     //Client,客户端 void main() { //手机品牌N std::cout<<"手机品牌N:"<
    
     SetHandsetSoft(new HandsetGame()); ab->Run(); ab->SetHandsetSoft(new HandsetAddressList()); ab->Run(); delete ab; //手机品牌M std::cout<
     
      SetHandsetSoft(new HandsetGame()); ab->Run(); ab->SetHandsetSoft(new HandsetAddressList()); ab->Run(); delete ab; ab=NULL; std::cout<
      
       

(3)运行截图