参考数据类成员访问者模式

时间:2015-06-09 05:37:48

标签: c++ design-patterns reference

我有一个容器类,它有一个名为DataStore的普通旧数据类型。 此数据存储将传递给访问者。他们共享一个副本,因为访问者可以看到容器执行的任何更新。

class xyz
{
    //Plain Old Datatype
    typedef struct DataStore
    {
        //add any new required data by any test here
        bool    _detectorConnectionStatus;
        DataStore():_detectorConnectionStatus(false){}
    }DataStore;

    DataStore _dataStore;

    typedef struct visitorData
    {
        DataStore& dataStore;
        visitorData(DataStore data):dataStore(data){}
    }visitorData;

    //data to be sent to visitor
    visitorData _visitorData;
};

xyz::xyz():_visitorData(_dataStore)
{
}

class IVisitor
{
private:
struct DataStore* dataStore;
public:
//get the data,no check for validity of data performed
 void visit(struct DataStore& dataStore){};
//process the data
virtual void process() = 0;
};

代码编译但有更好/更清晰的方法吗?

1 个答案:

答案 0 :(得分:0)

好了,因为它是一个设计问题,我以不同的方式想到了它。完全不了解你的限制,这是我的建议:

  1. 使用正确的getter和setter方法使DataStore和visitorData分离。如果可以,请删除旧的数据类型。
  2. 将xyz类转换为单例,并使用适当的方法使其成为一个访问者类。

  3. 因此,从IVisitor派生的实用程序类将获取单例实例,而singleton将为您获取数据。

  4. 因此,它将按照OOD的预期实现高级抽象。

    我刚刚提出了一个想法的框架,你需要弄清楚细节。

    希望这有帮助