设计模式-结构型-代理
生活随笔
收集整理的這篇文章主要介紹了
设计模式-结构型-代理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#pragma once#ifndef PROXY_H #define PROXY_H // 定義了Proxy 和RealSubject 的公有接口, // 這樣就可以在任何需要使用到RealSubject 的地方都使用Proxy.
class Subject
{
public: Subject(){} virtual ~Subject(){} virtual void Request() = 0;
}; // 真正使用的實體
class RealSubject : public Subject
{
public: RealSubject(); virtual ~RealSubject(){} virtual void Request();
}; // 代理類,含有一個指向RealSubject 對象的指針
class Proxy : public Subject
{
public: Proxy();virtual ~Proxy(); virtual void Request();
private: RealSubject* m_pRealSubject;
}; #endif
#include "StdAfx.h" #include "proxy_impl.h"#include <iostream> RealSubject::RealSubject() { std::cout << "Constructing a RealSubject\n"; } void RealSubject::Request() { std::cout << "Request By RealSubject\n"; } Proxy::Proxy() : m_pRealSubject(NULL) { std::cout << "Constructing a Proxy\n"; } Proxy::~Proxy() { delete m_pRealSubject; m_pRealSubject = NULL; } void Proxy::Request() { // 需要使用RealSubject 的時候才去初始化 if (NULL == m_pRealSubject) { std::cout << "Request By Proxy\n"; m_pRealSubject = new RealSubject(); } m_pRealSubject->Request(); }
// Proxy.cpp : 定義控制臺應用程序的入口點。 //#include "stdafx.h"#include "proxy_impl.h" #include <stdlib.h>//為其他對象提供一種代理以控制對這個對象的訪問。 int _tmain(int argc, _TCHAR* argv[]) {Subject* pProxy = new Proxy(); pProxy->Request(); delete pProxy; system("pause"); return 0; }
#include "StdAfx.h" #include "proxy_impl.h"#include <iostream> RealSubject::RealSubject() { std::cout << "Constructing a RealSubject\n"; } void RealSubject::Request() { std::cout << "Request By RealSubject\n"; } Proxy::Proxy() : m_pRealSubject(NULL) { std::cout << "Constructing a Proxy\n"; } Proxy::~Proxy() { delete m_pRealSubject; m_pRealSubject = NULL; } void Proxy::Request() { // 需要使用RealSubject 的時候才去初始化 if (NULL == m_pRealSubject) { std::cout << "Request By Proxy\n"; m_pRealSubject = new RealSubject(); } m_pRealSubject->Request(); }
// Proxy.cpp : 定義控制臺應用程序的入口點。 //#include "stdafx.h"#include "proxy_impl.h" #include <stdlib.h>//為其他對象提供一種代理以控制對這個對象的訪問。 int _tmain(int argc, _TCHAR* argv[]) {Subject* pProxy = new Proxy(); pProxy->Request(); delete pProxy; system("pause"); return 0; }
總結
以上是生活随笔為你收集整理的设计模式-结构型-代理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式-结构型-装饰
- 下一篇: 设计模式-行为-职责链