C ++中的包装设计

时间:2014-10-29 12:20:05

标签: c++ thread-safety rcf

我正在做一些c ++工作,设计一个在测试框架中使用的模拟器。 无论如何,被测系统正在暴露我正在使用的RCF API。问题是我只允许(模拟真实系统)拥有一个" RCF客户端"每个连接。这意味着我将不得不使用客户端线程安全。

通常我会通过名字来调用RCF方法:

client->methodA(param);

现在我必须(我认为)在包含互斥锁调用的方法中包装每个方法:

virtual class RCFClientWrapper
{
protected:
    boost::mutex mtx;
public:
    virtual RCFClientWrapper();
}

class FunctionAClient:RCFClientWrapper
{
private:
    boost::shared_ptr<RcfClient<IRCFFunctionA_IDL> > client;
public:
    /*....Stuff....*/
    void methodA(param)
    {
        boost::lock_guard<boost::mutex> lock(mtx);
        client->methodA(param);
    }
}

首先,有更好的方法吗? 第二,有没有办法做所有这些小方法&#34;自动&#34;?而不是每个方法都必须这样做?好像很多不必要的副本/意大利面。

1 个答案:

答案 0 :(得分:0)

为什么不考虑使用代理类来实现Proxy Pattern,其中对象是一个接口,或者是其他对象的中介。