设计模式_代理模式

代理模式

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。


#ifndef _PROXY_H_
#define _PROXY_H_

#include<iostream>
class XImage
{
public:
    virtual void display() = 0;
};

class realImage :public XImage
{
public:
    realImage( std::string name ):imageName(name) 
    {
        load();
    }

    void load()
    {
        std::cout << "load spend much time" << std::endl;
    }

    void display() override
    {
        std::cout << "real image name is:" << imageName << std::endl;
    }

private:
    std::string imageName;

};

//延时代理
//因为构造一个realImage很耗时.
//只有正在使用display()的时候才初始化realImage.
//否则只需使用imageProxy即可.
class imageProxy : public XImage
{
public:
    imageProxy(std::string name):imageName(name) {}

    void display() override
    {
        if(rImage)
            rImage->display();
        else
        {
            rImage = new realImage(imageName);
            rImage->display();
        }
    }

private:
    realImage * rImage;
    std::string imageName;

};

#endif

int main()
{
    XImage * proxy = new imageProxy("dijiang.jpg");
    proxy->display();
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值