假设有两个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
中,我们首先将数据转换为数据库理解的格式并存储它。
我的问题是,在数据提供程序中存在转换方法是否有意义,以便能够解耦这两个类而不必共享相同的类型。请注意,实际上,数据的复杂性更高,因此在类之间的标题中共享数据类型并不干净。
答案 0 :(得分:0)
已知解决方案
通过查看已存在的设计模式列表(例如:维基百科),没有任何与此问题直接相关的内容。在这种情况下,最好的解决方案是尝试使用已知的设计模式来解决问题。
包装
适配器/包装器模式可以为这个问题提供一个很好的解决方案。这里不同的类型只是包装原始类型。
其他解决方案
复制并粘贴?的:)强>