我的问题是与设计相关的问题。
下面是类图,它接近MVC模型。基本上,View拥有 DataContainer 。 DataContainer 有许多不同类型的数据( Data1 , Data2 ,..)。它还有一个 DataModifiable 。 DataModifiable 实际上是在 ModifyingThread 期间修改的。 修改线程由查看类创建。
View ------- ModifyingThread
| |
| |
DataContainer |
| | \ |
| | \ |
Data1 Data2 DataModifiable
DataModifiable 对于 DataContainer 应该是只读的,并且对于 ModifyingThread 是可写的。
以下是我的问题:哪个类应该拥有 DataModiable ,哪个类应该创建它?是 DataModifiable 还是 DataContainer ?
答案 0 :(得分:0)
MVC中的Normaly
视图由“父视图”拥有,并将其中的一些输入注册到控制器上,以便它可以并且只会触发事件,如果能够注册的控制器将对其进行响应。
该控制器拥有DataModel,并且根据从视图接收的事件,将函数应用于模型或其内部状态。
模型通常与控制器没有多少通信,但可以使用“事件系统”,这样控制器就不必每隔X秒查询一次模型就可以确定它的状态。
因此,根据我在图表中的理解,DataContainer是您的控制器,应该拥有您的DataModifiable。
但是你应该更改你的修改线程,以便它在Controller(DataContainer)上调用函数而不是直接在模型上调用(DataModifiable)
这样做会导致一些非常清晰的MVC,你也可以重命名你的类,这样只有通过读取类名,我们知道它是mvc的哪一部分。
++你不应该从视图类中启动一个新线程,视图类应该为它启动一个RequestEvent,你应该有一个Controller - ThreadController来为你完成这项工作。它还允许您保留该线程的句柄并有一个类来正确管理它。查看MVC的一部分不应该出于某种原因这样做... IE MVC lol