Proxy(代理模式)

來源:互聯網
上載者:User
// 介面類標頭檔class CSubject{public:CSubject();~CSubject();virtual BOOL DownPic()=0;protected:private:};// 介面類實現檔案#include "StdAfx.h"#include "Subject.h"CSubject::CSubject(){}CSubject::~CSubject(){}// 代理類標頭檔#include "Subject.h"#include "RealSubject.h"class CProxy : public CSubject{public:CProxy();~CProxy();BOOL DownPic();CSubject* GetInstance();protected:private:CSubject* m_pRealSubject;};// 代理類實現檔案#include "StdAfx.h"#include "Proxy.h"CProxy::CProxy(){m_pRealSubject=NULL;}CProxy::~CProxy(){if (NULL!=m_pRealSubject){delete m_pRealSubject;m_pRealSubject=NULL;}}BOOL CProxy::DownPic(){return GetInstance()->DownPic();}CSubject* CProxy::GetInstance(){if (NULL==m_pRealSubject){m_pRealSubject=new CRealSubject();}return m_pRealSubject;}// 圖片下載類標頭檔#include "Subject.h"class CRealSubject : public CSubject{public:CRealSubject();~CRealSubject();BOOL DownPic();protected:private:};// 圖片下載類實現檔案#include "StdAfx.h"#include "RealSubject.h"#include <iostream>using namespace std;CRealSubject::CRealSubject(){}CRealSubject::~CRealSubject(){}BOOL CRealSubject::DownPic(){cout<<"下載檔案開始"<<endl;Sleep(3000);cout<<"下載檔案結束"<<endl;return TRUE;}// 用戶端調用實現#include "stdafx.h"#include "Subject.h"#include "Proxy.h"#include <iostream>using namespace std;int main(int argc, char* argv[]){cout<<"解析Head"<<endl;CProxy* m_Proxy=new CProxy();m_Proxy->DownPic();delete m_Proxy;cout<<"解析Foot"<<endl;return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.