加快建设乡镇招商网站,住房和城乡建设部网站招聘,做3d地形比较好的网站,做系统网站信息检索网站作者#xff1a;翟天保Steven 版权声明#xff1a;著作权归作者所有#xff0c;商业转载请联系作者获得授权#xff0c;非商业转载请注明出处 一、代理模式是什么#xff1f; 代理模式是一种结构型的软件设计模式#xff0c;在不改变原代码前提下#xff0c;提供一个代理…作者翟天保Steven 版权声明著作权归作者所有商业转载请联系作者获得授权非商业转载请注明出处 一、代理模式是什么 代理模式是一种结构型的软件设计模式在不改变原代码前提下提供一个代理以控制对原对象的访问。 代理模式的优点
职责清晰。真实对象专注于自身业务逻辑不用考虑其他非本职内容交给代理完成。高拓展性。真实对象的改变不影响代理。解耦。将客户端与真实对象分离降低系统耦合度。提高性能。虚拟代理可以减少系统资源的消耗。高安全性和稳定性。代理能很好地控制访问提高程序安全。代理模式的缺点
增加系统复杂度。代理的职责往往较冗杂。请求速度降低。客户端与真实对象中加入代理一定程度上会降低整个系统流程的运行效率。二、代理模式
2.1 结构图 客户端即Main主函数本文示例中代理添加了额外功能-充值因此客户端直接调用代理。 2.2 代码示例 场景描述游戏往往有自己的代理商想要玩魔兽需要和其代理进行沟通在进行充值后正常游戏。
//Game.h
/****************************************************/
#pragma once
#include iostreamusing namespace std;#include iostream
using namespace std;// 抽象游戏类
class Game
{
public:// 游戏加载virtual void load() 0;// 游戏退出virtual void exit() 0;
};// 真实游戏类-魔兽世界
class WOW : public Game
{
public:// 游戏加载virtual void load() {cout 魔兽世界加载。 endl;}// 游戏退出virtual void exit() {cout 魔兽世界退出。 endl;}
};// 代理类-魔兽代理
class ProxyWOW : public Game
{
public:// 构造函数ProxyWOW() {m_wow new WOW();}// 析构函数virtual ~ProxyWOW() {if (m_wow ! nullptr) {delete m_wow;m_wow nullptr;}}// 充值时间void recharge(int money) {m_time money / 100;cout 充值 money endl;cout 获得时长 m_time endl;}// 游戏加载virtual void load() {cout 代理启动。 endl;if (m_time 0) {m_wow-load();cout 游戏时长1小时。 endl;m_time - 1;cout 剩余时长 m_time endl;flag true;}else {cout 剩余游戏时长不足请充值。 endl;flag false;}}// 游戏退出virtual void exit() {if (flag) {m_wow-exit();flag false;}cout 代理关闭。 endl;}private:bool flag false;int m_time 0;WOW* m_wow;
};
//main.cpp
/****************************************************/
#include iostream
#include string
#include Subject.husing namespace std;int main()
{// 玩魔兽ProxyWOW* proxy new ProxyWOW();// 加载proxy-load();// 充值proxy-recharge(1000);// 加载proxy-load();// 退出proxy-exit();// 清理内存delete proxy;proxy nullptr;return 0;} 程序结果如下。 本文提供的示例是游戏方面的玩大型网络游戏往往都要通过代理的平台所以我模拟了一个简易的充值和游戏流程。代理在生活中随处可见各种中介服务就是代理的一种在网络应用中代理也很常见如服务器代理等等。 三、总结 我尽可能用较通俗的话语和直观的代码例程来表述我对代理模式的理解或许有考虑不周到的地方如果你有不同看法欢迎评论区交流希望我举的例子能帮助你更好地理解代理模式。 如果文章帮助到你了可以点个赞让我知道我会很快乐~加油