我正在编写一个基本上从多个流中获取不同信息的库,组装并匹配它们并将匹配结果发送出去。所以我将A,B和C,D,E,F两个类作为不同最终结果的构建器类。
A类从流中解析原始数据并将数据组织成块并传递给B,然后将最终匹配的结果发送出去。
class A {
public:
/* put data into structure and pass to B*/
void parseStreamA(rawData);
void parseStreamB(rawData);
...
/* send final result out */
void send();
}
B类从A获取块结构并尝试将其与其接收的其他块匹配,然后将匹配块放入结构C,D,E,F取决于块的类型。
class B {
public:
/* receives block and try to match to other blocks, put blocks into
corresponding structure C or D or E or F */
void receiveBlock(block);
}
C,D,E,F ......如果它们具有所有部分,则采用多个匹配块并发送回A。
我本可以做到以下几点:
namespace n {
class A {
class B {
class C{
};
class D{
};
};
};
}
但我认为这不是一个好主意。
所以我把它们分开来做平面课。现在我有一堆数据结构和方法在类之间共享,但我不想将它们放入标题并附加到类,因为它们将在命名空间n中变为全局。我不想将这些结构和方法包装在一个类中,因为在我的情况下将结构引用为classX::structureY
似乎不合适。将类包装在另一个命名空间中也不是一个好主意。我只希望我的类结构简单且可伸缩。我该如何构建这个?
答案 0 :(得分:2)
我还建议你看看https://en.wikipedia.org/wiki/Single_responsibility_principle。
如果不知道课程之间的关系,我们就无法提供帮助。