转换/映射方法的最佳实践

时间:2013-01-29 22:49:39

标签: c++ design-patterns

假设有两个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中,我们首先将数据转换为数据库理解的格式并存储它。

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

1 个答案:

答案 0 :(得分:0)

已知解决方案

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

包装

适配器/包装器模式可以为这个问题提供一个很好的解决方案。这里不同的类型只是包装原始类型。

其他解决方案

复制并粘贴?的:)