C++設計模式之Proxy模式(代理模式)
代理模式很容易理解,就是代替別人去做某一件事,打個比方,我們需要買水果,一般是去超市或者水果店買水果,很少有人去果園買水果,果園是生產水果的地方,但很少出售水果,在這裡,水果店,超市就成了代理。
首先定義一個抽象類,提供所有的函式介面。
定義賣水果的抽象類,也就是介面,果園與超市都要繼承這個類。
-
#pragma once
-
class CSellFruits//定義一個抽象類
-
{
-
public :
-
CSellFruits( void );
-
virtual ~CSellFruits( void );
-
virtual void sellapple()= ; //定義介面,賣蘋果
-
virtual void sellorange()= ; //定義介面,賣橘子
-
};
-
-
#include "SellFruits.h"
-
CSellFruits::CSellFruits( void )
-
{
-
}
-
-
-
CSellFruits::~CSellFruits( void )
-
{
-
}
2.定義具體類,也就是果園類,果園生產水果,但是一般不買水果
-
#pragma once
-
#include "sellfruits.h"
-
#include <stdio.h>
-
class COrchard :
-
public CSellFruits
-
{
-
public :
-
COrchard( void );
-
virtual ~COrchard( void );
-
virtual void sellapple();
-
virtual void sellorange();
-
};
-
-
#include "Orchard.h"
-
COrchard::COrchard( void )
-
{
-
}
-
-
-
COrchard::~COrchard( void )
-
{
-
}
-
-
void COrchard::sellapple()
-
{
-
printf ( "Sell apple\n" );
-
}
-
-
void COrchard::sellorange()
-
{
-
printf ( "Sell orange\n" );
-
}
3.定義代理類,代理賣水果的類
-
#pragma once
-
#include "sellfruits.h"
-
#include "Orchard.h"
-
#include <stdio.h>
-
class CProcySellFruits :
-
public CSellFruits
-
{
-
public :
-
CProcySellFruits( void );
-
virtual ~CProcySellFruits( void );
-
virtual void sellapple();
-
virtual void sellorange();
-
private :
-
CSellFruits *p_SellFruits; //傳入介面物件
-
};
-
-
#include "ProcySellFruits.h"
-
CProcySellFruits::CProcySellFruits( void ):p_SellFruits( NULL )
-
{
-
}
-
-
-
CProcySellFruits::~CProcySellFruits( void )
-
{
-
}
-
-
void CProcySellFruits::sellapple()
-
{
-
if ( this ->p_SellFruits== NULL )
-
{
-
this ->p_SellFruits= new COrchard(); //用被代理的類例項化
-
}
-
this ->p_SellFruits->sellapple(); //代理果園賣蘋果
-
}
-
-
void CProcySellFruits::sellorange()
-
{
-
if ( this ->p_SellFruits== NULL )
-
{
-
this ->p_SellFruits= new COrchard(); //用被代理的類例項化
-
}
-
this ->p_SellFruits->sellorange(); //代理果園賣橘子
-
}
4.實際呼叫
-
CProxySellFruits* p= new CProxySellFruits(); //用代理類賣水果
-
p->SellApple();
-
p->SellOrange();
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69915785/viewspace-2651899/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式之代理模式(proxy pattern)設計模式
- C++設計模式之代理模式C++設計模式
- C#設計模式——代理模式(Proxy Pattern)C#設計模式
- 說透設計模式-代理模式與Proxy設計模式
- Head First 設計模式 —— 13. 代理 (Proxy) 模式設計模式
- java23中設計模式–代理模式ProxyJava設計模式
- java23中設計模式--代理模式ProxyJava設計模式
- 設計模式之代理模式設計模式
- 《設計模式》之代理模式設計模式
- Java設計模式之代理模式Java設計模式
- Javascript設計模式之代理模式JavaScript設計模式
- 設計模式系列之代理模式(Proxy Pattern)——物件的間接訪問設計模式物件
- c++設計模式-裝飾器模式和代理模式C++設計模式
- 代理模式(Proxy)模式
- Java設計模式之(五)——代理模式Java設計模式
- 23天設計模式之代理模式設計模式
- 設計模式漫談之代理模式設計模式
- C++ 設計模式之命令模式C++設計模式
- 設計模式之代理設計模式
- 【設計模式】代理模式設計模式
- 設計模式-代理模式設計模式
- 設計模式~代理模式設計模式
- 設計模式----代理模式設計模式
- 設計模式——代理模式設計模式
- 23種設計模式之代理模式(靜態代理)設計模式
- 12.java設計模式之代理模式Java設計模式
- JavaScript設計模式經典之代理模式JavaScript設計模式
- 設計模式之代理模式(結構型)設計模式
- 代理模式(Proxy Pattern)模式
- Java設計模式之七 —– 享元模式和代理模式Java設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- Java設計模式-代理模式Java設計模式
- PHP設計模式-代理模式PHP設計模式
- js設計模式--代理模式JS設計模式
- Java設計模式—代理模式Java設計模式
- 跟著GPT學設計模式之代理模式GPT設計模式
- 23種設計模式之——動態代理模式設計模式
- javascript設計模式 之 3代理模式JavaScript設計模式