DesignPattern/13.ProxyPattern/2.Code/ProxyPattern.h

66 lines
1.0 KiB
C
Raw Normal View History

2019-10-29 14:14:19 +00:00
#ifndef __FLYPATTERN_PATTERN_H__
#define __FLYPATTERN_PATTERN_H__
#include <mutex>
#include <time.h>
using namespace std;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
class Subject
{
public:
Subject(){}
virtual ~Subject(){}
2019-10-29 14:14:19 +00:00
virtual void method() = 0;
};
// <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
class RealSubject :public Subject
{
public:
RealSubject(){}
virtual ~RealSubject(){}
2019-10-29 14:14:19 +00:00
void method(){
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>񷽷<EFBFBD>\n");
}
};
// Log<6F><67>
class Log
{
public:
Log(){}
string getTime(){
time_t t = time(NULL);
char ch[64] = { 0 };
//<2F><>-<2D><>-<2D><> ʱ:<3A><>:<3A><>
strftime(ch, sizeof(ch)-1, "%Y-%m-%d %H:%M:%S", localtime(&t));
return ch;
}
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class Proxy:public Subject
{
public:
Proxy(){
realSubject = new RealSubject();
log = new Log();
}
void preCallMethod(){
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>method()<29><><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ%s\n",log->getTime().c_str());
}
void method(){
preCallMethod();
realSubject->method();
postCallMethod();
}
void postCallMethod(){
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>method()<29><><EFBFBD>õ<EFBFBD><C3B5>óɹ<C3B3>!\n");
}
private:
RealSubject *realSubject;
Log* log;
};
#endif //__FLYPATTERN_PATTERN_H__