// 介面類標頭檔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;}