0

假设有两个 C++ 类 CDataProvider 和 CDbWrapper 如下:

Class CDataProvider {
public:
    void setData(MyDataType);
    void getData(MyDataType&);
    // ... snip ...
private:
   MyDataType d; // cached data
   CDbWrapper db;
   convertMyTypeToMyDbType(MyDataType, MyDbDataType&);
   convertMyDbTypeToMyType(MyDbDataType, MyDataType&);

};

Class CDbWrapper {
public:
    bool getFromDb(MyDbDataType&); 
    bool setToDb(MyDbDataType);
    // ... snip ...
};

CDataProvider::setData我们将首先将数据转换为数据库可以理解的格式并存储它。

我的问题是,在数据提供者中存在这样的转换方法是否有意义,以便能够解耦两个类并且不必共享相同的类型。请注意,实际上,数据更复杂,因此在不干净的类之间共享标头中的数据类型。

4

1 回答 1

0

已知的解决方案

通过查看已经存在的设计模式列表(例如:维基百科),没有任何与此问题直接相关的内容。在这种情况下,最好的解决方案是尝试使用已知的设计模式来解决问题。

包装器

Adapter/Wrapper 模式可以很好地解决这个问题。这里不同的类型只是包装了原始类型。

其他解决方案

复制和粘贴?:)

于 2013-02-01T13:30:30.350 回答