我的项目有3个类(class)。让我们称它们为MainWindow,ProcessUserInput和InitialUIPreparer。

MainWindow的工作只是通过按钮,文本,组合框等与用户对话。

ProcessUserInput将使用从MainWindow以及calc之后获取的值进行一些计算。完成后,它将一些处理过的数据发送回MainWindow,

并且InitialUIPreparer还将计算应在MainWindow上绘制的某些形状的位置,它将仅传递坐标而不绘制它们。但是它还需要获取一些数据,例如窗口大小等。

好问题开始了,例如MainWindow需要从每个类获取数据,而类需要从MainWindow获取数据。这导致循环依赖。我通过将MainWindow.h包含在“ProcessUserInput”和“InitialUIPreparer”中来解决此问题。但是只需在MainWindow中使用正向declecle,例如“class ProcessUserInput”和“class InitialUIPreparer”。

我仍然可以继续发展类(class)。但是就像我需要多次前瞻性说明是否表明设计不好,是否应该为将来的项目重新考虑设计?

最佳答案

通常,仅向前声明一个类并不表示设计不好:当您的运行时依赖项层次结构是双向的时,这种情况经常发生。但是,当依赖图非常密集时(即几乎每个类都依赖于几乎所有其他类),这是开始担心的正当理由:

在您的情况下,似乎可以从以与Model-View-Controller设计模式一致的方式分离类中受益。具体来说,您可能想要引入另一个类,我们将其称为Model,它将保留所有需要在其他类之间共享的信息。每个类都会从共享的Model中提取所需的信息,并将其生成的信息也放入模型中。这样,单个类就可以用对Model类的单个依赖项替换所有类的依赖项:

10-04 23:33
查看更多