【设计模式】为别人做嫁衣 --- 代理模式
一,概述
定义:代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。
作用:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。#include <iostream> class SchoolGirl //要追的女孩 {public:void SetName(std::string str)//名字 {m_Name = str;};std::string GetName(void) //获取女孩名字 {return m_Name;};private:std::string m_Name;};class Pursuit//追求行为类 {public:Pursuit(SchoolGirl* mm){m_mm = mm;};void GiveDolls(){std::cout << m_mm->GetName() << "送你洋娃娃" << std::endl;};void GiveFlower(){std::cout << m_mm->GetName() << "送你鲜花" << std::endl;};void GiveChocolate(){std::cout << m_mm->GetName() << "送你巧克力" << std::endl;};private:SchoolGirl* m_mm;};int main(){SchoolGirl* jiaojiao = new SchoolGirl();//初始化要追求的对象 jiaojiao->SetName("李娇娇");//事实上娇娇并不认识卓贾易Pursuit* zhuojiayi = new Pursuit(jiaojiao);zhuojiayi->GiveChocolate();zhuojiayi->GiveDolls();zhuojiayi->GiveFlower();delete jiaojiao;delete zhuojiayi;return 0;}
2)小菜代理第二版
缺点:也不是让戴励自己亲自追求,不符合题意。
3)小菜第三版
改进:添加接口,让一个对象实现接口,代理负责运用接口。
实现:代理同样实现接口,只是代理实现接口的时候实际上是调用实际实现者的方法。
三,代理模式的经典模板