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(){}
|
2021-04-04 13:09:08 +00:00
|
|
|
|
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(){}
|
2021-04-04 13:09:08 +00:00
|
|
|
|
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__
|