首页 > 编程语言 > 详细

【c++设计模式】代理模式

时间:2019-12-10 23:56:23      阅读:150      评论:0      收藏:0      [点我收藏+]

结构型模式

10)代理模式

本文参考

https://www.cnblogs.com/wrbxdj/p/5267370.html

代理模式贯彻了面对对象程序的开闭原则(对修改关闭,对扩展开放),在不改变原本类的情况下,修改用户的使用接口。
也就是为其他类提供一种代理,以控制对这个类的访问。真正调用时只让代理出现,不让真正的用户出现。

一般来说包括两个角色:
第一种,对象类。
第二种,代理类。
需要注意的是上面两个角色需要继承自同一基类。

例如在游戏中,通过代理来控制不同用户的访问权限。

//基本游戏接口
class play{
public:
    virtual void play1() = 0;
    virtual void play2() = 0;
};

//玩家接口
class player : public play{
public:
    void play1(){
        cout<<"装备1"<<endl;
    }
    void play2(){
        cout<<"装备2"<<endl;
    }
    void play3(){
        cout<<"装备3"<<endl;
    }
};

//代理玩家1
class proxyPlayer1 : public play{
public:
    proxyPlayer1(){
        m_player = new player();
    }
    void play1(){
        m_player->play1();
    }
    
    void play2(){
        cout<<"没有权限"<<endl;
    }

private:
    player* m_player;
};

//代理玩家2
class proxyPlayer2 : public play{
public:
    proxyPlayer2(){
        m_player = new player();
    }
    void play1(){
        m_player->play1();
    }
    
    void play2(){
        m_player->play2();
    }
private:
    player* m_player;
};

int main(){
    
    proxyPlayer1* p1 = new proxyPlayer1();
    p1->play1();
    p1->play2();
    
    cout<<"==="<<endl;
    
    proxyPlayer2* p2 = new proxyPlayer2();
    p2->play1();
    p2->play2();
    
}

最后输出为
技术分享图片

【c++设计模式】代理模式

原文:https://www.cnblogs.com/corineru/p/12019601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!