结构型模式
描述如何将类或对象按某种布局组成更大的结构。
需求分析:购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。找女朋友、找保姆、找工作等都可以通过找中介完成。
代理模式:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
优点:
缺点:
主要角色:
结构图:
图1 代理模式的结构图
具体案例:
第一步:抽象主题
#pragma once
#include <iostream>
using namespace std;
//抽象主题
class Rent
{
virtual int rentHouse()=0;
};
第二步:真实主题
//真实主题
//房东
class LandPeople:public Rent
{
public:
int rentHouse()
{
cout<<"房东需要 100 租金进行租房"<<endl;
return 100;
}
};
第三步:代理类
//代理类
//房屋中介
class Proxy:public Rent
{
public:
int rentHouse()
{
LandPeople *land=new LandPeople();
int money=land->rentHouse();
//代理类处理很复杂的任务
cout<<"中介此时出租了房东的房子,从中获利 100"<<endl;
return money+100;
}
};
第四步:主函数
#include "l.h"
int main()
{
Proxy *proxy=new Proxy();
int _money=proxy->rentHouse();
cout<<"一共需要 "<<_money<<"成功租房"<<endl;
cout<<"此过程见过房东, 中介在中间起作用!"<<endl;
}
结果显示: