转换/映射方法最佳做法

Conversion/mapping method best practice

本文关键字:最佳 方法 映射 转换      更新时间:2023-10-16

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

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

已知的解决方案

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

包装纸

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

其他解决方案

复制和粘贴?:)