我正在使用MVC模式开发MFC应用程序。我使用MFC Dialog类作为控制器和模型的模型类,一个视图类将模型类保存为视图的成员。模型中的数据以树形结构组织,如下图所示:
在图中,大写字母代表一个类名,因此模型中的数据是一个对象树,每个对象包含许多数据成员,包括对子对象的引用,如子指针对象或子对象数组
但问题是,当视图在UI上显示或更新模型中的数据时,需要访问每个级别上每个节点对象的数据成员,这需要包括那些节点对象的头文件,以便检索他们的数据成员。因此,在View类的cpp文件中绘制UI的方法如下所示:
#include "B.h"
#include "C.h"
#include "D.h"
#include "E.h"
#include "F.h"
#include "G.h"
void View::Draw(CDC *pDC)
{
A a= Model.A;
B b1=A.b1;
B b2=A.b2;
for (int i=0; i<b1.arrayofC.size; i++)
{
C c=b1.arrayofC[i];
int length=c.getlength();
int j=c.arrayofD.size;
while (j>0)
{
D d=c.arrayofD[j];
CString Name=d.Name;
...
j--;
}
....
}
for (int i=0; i<b2.arrayofC.size;i++)
{
C c=b2.arrayofC[i];
double start=c.start;
double end=c.end;
int j=c.arrayofD.size;
while (j>0)
{
D d=c.arrayofD[j];
CString Name=d.Name;
...
j--;
}
....
}
}
这使得代码非常混乱,很明显模型和视图之间存在紧密耦合。如何使它们彼此高度独立,以确保我的应用程序的可维护性或可伸缩性。