大话设计模式C++实现-第7章-代理模式

2015-01-24 05:47:53 · 作者: · 浏览: 3

一、UML图

\

二、概念

代理模式:<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPs6qxuTL+7bUz/PM4bmp0rvW1rT6wO3S1L/Y1sa21NXiuPa21M/ztcS3w87KoaM8L3A+CjxwPjxzdHJvbmc+yP2hotOm08Ozob6wPC9zdHJvbmc+PC9wPgo8cD6jqDGjqTxzdHJvbmc+1LazzLT6wO08L3N0cm9uZz6jrNKyvs3Kx86q0ru49rbUz/PU2rK7zay1xLXY1re/1bzkzOG5qb7Wsr+0+rHtoaPV4tH5v8nS1NL+stjSu7j2ttTP87Tm1NrT2rK7zay12Na3v9W85LXEysLKtaGjPC9wPgo8cD6jqDKjqTxzdHJvbmc+0OnE4rT6wO08L3N0cm9uZz6jrMrHuPm+3dDo0qq0tL2ov6rP+rrctPO1xLbUz/Oho82ouf3L+8C0tOa3xcq1wP27r9Do0qq63LOkyrG85LXE1ebKtbbUz/Oho8D9yOejus28xqy809TYtcTKsbryoaM8L3A+CjxwPqOoM6OpPHN0cm9uZz6wssirtPrA7Twvc3Ryb25nPqOs08PAtL/Y1sbV5srHttTP87fDzsrKsbXEyKjP3qGjPC9wPgo8cD6jqDSjqTxzdHJvbmc+1sfE3Na40v08L3N0cm9uZz6jrMrH1ri1sbX308PV5sq1tcS21M/ztcTKsbryo6y0+sDttKbA7cHtzeLSu9CpysKhozwvcD4KPHA+PHN0cm9uZz64+bG+1K3A7aO6PC9zdHJvbmc+tPrA7cSjyr3G5Mq1vs3Kx9Tat8POyrbUz/O1xMqxuvLS/cjrwcvSu7aos8y2yLXEvOS909DUo6zS8s6q1eLW1rzkvdPQ1KOsv8nS1Li9vNO24NbW08PNvqGjPC9wPgo8cD48c3Ryb25nPsvEoaJDJiM0MzsmIzQzO8q1z9Y8L3N0cm9uZz48L3A+CjxwPqOoMaOpUHJveHkuaDwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">#include #include //SchoolGirl类 class SchoolGirl { private: std::string name; public: void setName(std::string name) { this->name=name; } std::string getName() { return name; } }; //Subject类,定义了RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方使用Proxy class IGiveGift { public: virtual void GiveDolls()=0; virtual void GiveFlowers()=0; virtual void GiveChocolate()=0; }; //RealSubject类,定义了Proxy所代表的真实实体 class Pursuit:public IGiveGift { private: SchoolGirl* mm; public: Pursuit(SchoolGirl* mm) { this->mm=mm; } void GiveDolls() { std::cout< getName()<<" 送你洋娃娃"< getName()<<" 送你鲜花"< getName()<<" 送你巧克力"< GiveDolls(); } void GiveFlowers() { gg->GiveFlowers(); } void GiveChocolate() { gg->GiveChocolate(); } };

(2)main.cpp

#include "Proxy.h"
#include 
   
    
#include 
    
      //Client,客户端 void main() { SchoolGirl* jiaojiao=new SchoolGirl(); jiaojiao->setName("李娇娇"); Proxy* daili=new Proxy(jiaojiao); daili->GiveDolls(); daili->GiveFlowers(); daili->GiveChocolate(); std::cout<<" "<