结构型模式-代理(proxy)
来源:互联网 发布:网络教育统考报名时间 编辑:程序博客网 时间:2024/06/05 05:43
代理
为其他对象提供一种代理以控制对这个对象的访问.
实例
main.cc:
#include "runner.h"#include "runner_proxy.h"#include <windows.h>using namespace std;/*design_pattern:"proxy"December 10, 2016, Xiamen marathon sudden death occurs, one of the players for the runreal runner:linproxy runner:wu*/int main(){ Runner *runner = new Runner("lin"); RunnerProxy *runner_proxy = new RunnerProxy("wu"); runner_proxy->SetRunner(runner); runner_proxy->Run(); //clear delete runner; delete runner_proxy; system("Pause"); return 0;}
Person:
//person.h#ifndef HELENDP_SOURCE_PERSON_H_#define HELENDP_SOURCE_PERSON_H_#include <string>using namespace std;class Person{public: Person(string name); virtual ~Person(); virtual void Run(); string GetName();private: string name_;};#endif//person.cc#include "person.h"Person::Person(string name){ name_ = name;}Person::~Person(){}void Person::Run(){}string Person::GetName(){ return name_;}
Runner:
//runner.h#ifndef HELENDP_SOURCE_RUNNER_H_#define HELENDP_SOURCE_RUNNER_H_#include "person.h"class Runner : public Person{public: Runner(string name); ~Runner(); void Run();};#endif//runner.cc#include "runner.h"#include <iostream>using namespace std;Runner::Runner(string name) :Person(name){}Runner::~Runner(){}void Runner::Run(){ cout << this->GetName() << " " << "run in xiamen marathon" << endl;}
RunnerProxy:
//runner_proxy.h#ifndef HELENDP_SOURCE_RUNNER_PROXY_H_#define HELENDP_SOURCE_RUNNER_PROXY_H_#include "person.h"#include "runner.h"class RunnerProxy : public Person{public: RunnerProxy(string name); ~RunnerProxy(); void Run(); void SetRunner(Runner *runner);private: Runner *runner_;};#endif//runner_proxy.cc#include "runner_proxy.h"#include <iostream>using namespace std;RunnerProxy::RunnerProxy(string name):Person(name){}RunnerProxy::~RunnerProxy(){}void RunnerProxy::SetRunner(Runner *runner){ runner_ = runner;}void RunnerProxy::Run(){ runner_->Run();}
代码和UML图(EA)工程文件,最后会整理打包上传.
UML类图
结构
- Subject(Person):抽象类.
- Porxy(RunnerProxy):代理类.
- RealSubject(Runner):真实对象类.
优点
- 代理模式能够协调调用者和被调用者,在一定程度上降低了系 统的耦合度.
- 远程代理使得客户端可以访问在远程机器上的对象,远程机器 可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求.
- 虚拟代理通过使用一个小对象来代表一个大对象,可以减少系 统资源的消耗,对系统进行优化并提高运行速度.
- 保护代理可以控制对真实对象的使用权限.
缺点
- 由于在客户端和真实主题之间增加了代理对象,因此 有些类型的代理模式可能会造成请求的处理速度变慢.
- 实现代理模式需要额外的工作,有些代理模式的实现非常复杂.
0 0
- Proxy代理(结构型模式)
- 【结构型模式】proxy(代理)
- 结构型模式-代理(proxy)
- 结构型-代理模式(proxy)
- 代理模式(Proxy)-对象结构型模式
- 结构型模式-----代理模式(Proxy)
- 结构型设计模式---代理模式(Proxy)
- 结构型模式-Proxy ( 代理模式 )
- 结构型模式:代理模式(Proxy Pattern)
- Proxy模式(代理模式 结构型)
- Proxy 代理模式 对象结构型模式
- 八、Proxy 代理模式 (结构型)
- 结构型模式: Proxy(代理)
- 代理模式 Proxy (结构型)
- 代理模式Proxy(结构型)
- java代理模式(Proxy)-结构型
- 结构型模式之代理PROXY
- 代理模式Proxy(结构型)
- hadoop的hdfs常用文件操作命令
- switch case正确的使用姿势——在代码之外的思考
- wordpress修改固定链接
- Java泛型
- java静态绑定和动态绑定
- 结构型模式-代理(proxy)
- 第二十八、Java面向对象之抽象类
- 转发:总结一些JavaScript开发的著名开源项目
- RocketMQ(五)性能测试报告
- 设置聊天游戏服务器的思路
- Spring中JdbcTemplate的使用
- Material Design
- 多股票策略和双均线策略结合
- tomcat配置都没错,一启动就秒关闭,转载别人的,以后可以自己留着