C++ 代理模式

  刚刚看到了C++代理模式,简单的学习了一下,当一个应用程序执行时,可以采用这种方法,至于到底怎么用,我还不知道。

  A->B->C。

  当应用A要执行的时候,采用代理B,B继承自协议C,实现C中的虚方法,C为一个抽象类,包含一个纯虚函数。这样的话,主函数中只需要执行A的方法就可以了。

  下面用代码简单演示下上述过程。

  协议类Aprotol:  

 1 #ifndef _APROTOL_H
 2 #define _APROTOL_H
 3 
 4 class Aprotol
 5 {
 6 public:
 7     virtual void DoSomething()=0;
 8 };
 9 
10 #endif

  代理类Delegate:

 1 #ifndef _DELEGATE_H
 2 #define _DELEGATE_H
 3 
 4 #include"Aprotol.h"
 5 #include<iostream>
 6 using namespace std;
 7 
 8 class Delegate:public Aprotol
 9 {
10 public:
11     void DoSomething();
12 };
13 
14 void Delegate::DoSomething()
15 {
16     cout<<"程序从这里开始....do something\n";
17 }
18 #endif

  应用类Application:

 1 #ifndef _APPLICATION_H
 2 #define _APPLICATION_H
 3 
 4 #include"Delegate.h"
 5 class Application
 6 {
 7 public:
 8     Delegate * del;
 9     void set(Delegate *del)
10     {
11         this->del=del;
12     }
13     void run()
14     {
15         this->del->DoSomething();
16     }
17 };
18 
19 #endif

  main函数:

 1 #include"Application.h"
 2 #include"Aprotol.h"
 3 #include"Delegate.h"
 4 
 5 int main()
 6 {
 7     Delegate *a=new Delegate;
 8     Application *b=new Application;
 9     b->set(a);
10     b->run();
11     return 0;
12 }

  这样写话,清晰明了,主函数的程序不需要修改,我们只需要修改协议的方法即可。这里只是解释了一下这种思路,希望以后在实际用到的时候能有新的体会和见解。

C++ 代理模式,布布扣,bubuko.com

C++ 代理模式

上一篇:java遍历文件夹


下一篇:异常处理与MiniDump详解(2) 智能指针与C++异常