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

下一篇: Local variables in Template Haskell declarations