zoukankan      html  css  js  c++  java
  • c++ (proxy)代理模式

    假设我们有几个具有相似的窗体,都包含关闭窗体(closeButton)和按钮单击事件(ClickButton)我们在处理时,不想直接操作每个窗体,可以请求代理。

    #include<iostream>
    using namespace std;
    
    class IWindow
    {
    public:
        IWindow(void)
        {
        
        }
        ~IWindow()
        {
    
        }
        virtual void CloseButton() = 0;
        virtual void ButtonClick() = 0;
    private:
    };
    
    class ProxyWindow:public IWindow
    {
    public:
        ProxyWindow(IWindow* win):proxyptr(win)
        {
            
        }
        ~ProxyWindow()
        {
    
        }
        void CloseButton()
        {
            proxyptr->CloseButton();
        }
        void ButtonClick()
        {
            proxyptr->ButtonClick();
        }
    private:
         IWindow* proxyptr;
    
    };
    
    class AWindow:public IWindow
    {
    public:
        AWindow(void)
        {
        
        }
        ~AWindow()
        {
    
        }
        void CloseButton()
        {
            std::cout << "A's closeButton" << std::endl;
        }
        void ButtonClick()
        {
            std::cout << "A's ButtonClick" << std::endl;
        }
    private:
    };
    class BWindow:public IWindow
    {
    public:
        BWindow(void)
        {
        
        }
        ~BWindow()
        {
    
        }
        void CloseButton()
        {
            std::cout << "B's closeButton" << std::endl;
        }
        void ButtonClick()
        {
            std::cout << "B's ButtonClick" << std::endl;
        }
    private:
    };

    main函数

    int main()
    {
        ProxyWindow *ptr = new ProxyWindow(new AWindow());
        ptr->ButtonClick();
        ptr->CloseButton();
        
        ProxyWindow *ptr2 = new ProxyWindow(new BWindow());
        ptr2->ButtonClick();
        ptr2->CloseButton();
    
        getchar();
    
        return 0;
    }

    输出结果:

    A's ButtonClick
    A's closeButton
    B's ButtonClick
    B's closeButton
  • 相关阅读:
    idea 没有 persistence
    java 枚举(二) 级联关系
    java to edi 动态/静态映射
    edi to java
    C# 扩展方法
    最详细的C++对应C#的数据类型转换
    c# .Net随机生成字符串代码
    遍历结构体内部元素和值(Name and Value)
    寒假学习计划
    python os.path模块
  • 原文地址:https://www.cnblogs.com/onlycxue/p/3457594.html
Copyright © 2011-2022 走看看