C ++代理类
有什么方法可以在C ++中轻松实现代理类模式? 不使用AspectC ++或其他繁重的工具,只使用内置的宏或模板。
解释我想要什么:
class base_class
{
public:
virtual void method_one() { ... }
virtual void method_two() { ... }
}
class class_proxy : base_class
{
protected:
void before_any_method_call() { do stuff };
void after_any_method_call(std::exception* ex) { do stuff }
}
这是场景。 我想代理的类(base_class)可以进行远程调用,但是当网络关闭时,它会抛出从std :: exception派生的传输异常。 base_class有很多方法,我想捕获传输异常,以空的结果响应,并在下一次方法调用之前重新建立连接。
如果你的意思是通过像反射这样的东西自动生成的东西,不。 实现简单的代理服务器的常用方法是重写operator->
代理类的。 如果您在代理中需要做的任何事情都可以在那时完成,那么这会起作用。 这项技术在GoF的“实施”部分的“设计模式”中。
编辑(根据您的其他信息):如果你想每一个电话,在之前做一些operator->()
重载机制运作良好,这一点。 做一些事情后,每个电话是不容易实现自动化,但我能想象的东西被建造出来,当它自毁调用它特殊返回的对象。
这可能有助于http://www.stroustrup.com/wrapper.pdf,但我不认为有可能以这种方式处理异常。
我不确定派生是代理模式的最佳设计。 您的帖子可能已过时,但我有一个Proxy Pattern的样本版本来保护数组和STL容器元素的访问权限。 它使用模板编程和最后的C ++ 17功能:扣除指南!
链接地址: http://www.djcxy.com/p/52081.html上一篇: C++ proxy class