转换/映射方法最佳做法
Conversion/mapping method best practice
假设有两个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
中,我们将首先将数据转换为数据库理解的格式并存储它。
我的问题是,转换方法存在于数据提供程序中是否有意义,以便能够分离两个类而不必共享相同的类型。请注意,实际上,数据中存在更多的复杂性,因此在类之间共享标头中的数据类型是不干净的。
已知的解决方案
通过查看已经存在的设计模式列表(例如:维基百科),没有任何与此问题直接相关的内容。在这种情况下,最好的解决方案是尝试使用已知的设计模式来解决问题。
包装纸
适配器/包装器模式可以为这个问题提供一个很好的解决方案。在这里,不同的类型只是包装原始类型。
其他解决方案
复制和粘贴?:)
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?