您的位置:首页 > 其它

设计模式Before-after之代理模式

2014-04-01 23:39 309 查看
before.cxx

#include <iostream>
#include <string>

class Console {
public:
void write(std::string msg) {
std::cout << msg;
}
};

int main(void) {
Console console;
console.write("hello");
console.write(", ");
console.write("world!");
console.write("\n");
return 0;
}


after.cxx

#include <iostream>
#include <string>

class _Console {
public:
virtual void write(std::string msg) = 0;
};

class Console: public _Console {
public:
void write(std::string msg) {
std::cout << msg;
}
};

class ConsoleProxy: public _Console {
public:
~ConsoleProxy(void) {
this->console.write(this->cache);
}
void write(std::string msg) {
this->cache += msg;
}
private:
Console console;
std::string cache;
};

int main(void) {
ConsoleProxy consoleProxy;
consoleProxy.write("hello");
consoleProxy.write(", ");
consoleProxy.write("world!");
consoleProxy.write("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: