如何将不同的数据结构集成为一个?任何设计模式或经验
How to integrate different data struct into one ? Any design pattern or exprience?
正如您所知,不同的供应商可能有不同的数据字段名称。虽然名称不同,但数据结构几乎相同。例如,
struct s1 {
int s1Price,
int s1Volume
};
struct s2 {
int s2Price,
int s2Volume
};
就像股票市场数据一样,这些数据会自动发送给程序,程序只是接收数据然后进行处理。
我想设计一个程序,可以很容易地改变到其他供应商的数据结构。
如果我用s1
开发程序,一段时间后,我想以最小的变化改为s2
。
希望你能明白我的意思。
你能给我一些建议吗?有什么设计模式或经验吗?
这里的关键字是抽象
这里有一种方法:
#include <iostream>
struct s1 {
int s1Price;
int s1Volume;
};
struct s2 {
int s2Price;
int s2Volume;
};
class Idata
{
public:
virtual ~Idata() {}
public:
virtual int getPrice() = 0;
virtual int getVolume() = 0;
};
class s1Data : public Idata, public s1 {
public:
s1Data(const s1& S1) : s1(S1) {}
virtual int getPrice() {
return s1Price;
}
virtual int getVolume() {
return s1Volume;
}
};
class s2Data : public Idata, public s2 {
public:
s2Data(const s2& S2) : s2(S2) {}
virtual int getPrice() {
return s2Price;
}
virtual int getVolume() {
return s2Volume;
}
};
void my_func_that_will_never_change_because_it_uses_abstraction(Idata *data)
{
std::cout << data->getPrice() << std::endl;
std::cout << data->getVolume() << std::endl;
}
int main(void)
{
s1 Sfirst{42, 21};
s2 Ssecond{99, 88};
s1Data DataFirst(Sfirst);
s2Data DataSecond(Ssecond);
my_func_that_will_never_change_because_it_uses_abstraction(&DataFirst);
my_func_that_will_never_change_because_it_uses_abstraction(&DataSecond);
}
以my_func_that_will_never_change_because_it_uses_abstraction
编码的方式编写所有程序(通过使用接口IData
而不是具体的底层类型),除了初始化阶段之外,您将没有什么可更改的,初始化阶段决定您将首先拥有哪种类型的数据。
相关文章:
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 计算单词中的音节数,但考虑到单词中彼此相邻的任何元音都算作一个音节
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 零四元数和任何向量都不为零的特征积,这是一个错误吗?
- 无法"this"指针传递到另一个类并在 CPP 中调用该类的任何方法
- 给定一个 3 x 3 矩阵或任何 n x n 矩阵,为什么我的以下函数找不到对角线差异?
- MSVC 错误:4 个重载中的任何一个都无法转换所有参数类型
- 如何创建一个模板化函数,可以在任何具有字符串键的 std::map 上运行?
- 在没有任何锁的情况下加入另一个线程后是否需要内存围栏?
- 完成任何一个操作后,该程序会自动退出,为什么?
- 螺旋矩阵在最后一个"for"循环中中断,不显示任何内容
- 如何实现一个接受任何容器类型的函数
- 为什么我的变量在我尚未将其设置为任何值时返回一个值?
- 这个基于范围的'for'语句需要一个合适的函数,但找不到任何函数
- Cout 一个字符串可以打印任何内容到屏幕上
- 将类的任何模板存储在另一个类中
- 查找字符串是否包含字符串向量的任何一个元素的最佳方法
- 发送到另一个窗口的鼠标移动消息不执行任何操作
- 如何将不同的数据结构集成为一个?任何设计模式或经验