2016-11-08 109 views
0

我正在寻找一个好的建议/建议的设计模式或另一个好主意,以解决以下问题。起初有一些信息。我正在写一个模拟器,它模拟大约10到15个工厂。每个工厂都不同,并且有不同的信息,我想在GUI上显示。每个工厂都在自己的线程中工作。我想显示信息,如工厂的当前状态,当前正在使用的材料...等等。我的GUI只包含一个标签控件,每个工厂都有一个标签。现在我的问题是要以良好的方式显示数据。用户还可以控制工厂,例如可以停止并启动工厂或编辑工厂使用的材料。所以现在我正在寻找一种在GUI和我的工厂线程之间交换数据的好方法。我对编程还是一个新手,但我知道有些东西像数据绑定,MVC,MVVM ......但没有什么能真正适合我的问题。这至少是我的看法。这就是为什么我想听到不同的意见。桂设计模式推荐

我有以下想法来交换线程之间的数据:我会为每个工厂创建一个模型类,其中gui和工厂线程都会读/写。当然一切都同步。然后,我会在每个工厂中创建一个事件,当我想要显示的数据发生更改时抛出。但为了让用户保持gui的可访问性,我会动态地将gui连接到在选项卡控件中选择的工厂事件。所以当选项卡发生变化时,我会将GUI与选定的工厂连接起来。一个选项卡只显示一个工厂。问题是,你可以加快模拟速度,所以数据会变得很快,这就是为什么我需要一种平滑和良好的方式来交换数据。工厂在自己的线程中运行并读取模型中的数据,当gui更改数据时,并不需要通知它。

您对我的想法有何看法?我是否打算做你听过的最大的sh **?如果你能给我一些时间,这将是非常棒的。这个模拟器是我学士论文的一部分,所以如果有一个可以使用的好模式(用于科学背景),那将是非常好的。我寻找模式,但像我说我没有找到一个令人满意的模式,但我可能是错的。抱歉我的英语不好!我正在使用WPF。我几乎忘记提及它。

回答

0

由于您使用WPF,并根据您的描述,MVVM将工作得非常好:

  • 模型层含有植物线程中运行的设备模型和仿真,使用事件发布变更(每个植物一个模型和线程)。
  • 查看模型公开了格式化为在UI上显示的模型属性。它监听模型的变化(发布在模型线程上)并在UI线程上重新发布事件(每个工厂一个视图模型)。
  • 查看绑定到选定选项卡的视图模型实例并在UI上显示数据。
+0

谢谢你的回答。我的脑海里也有这种模式(最适合的模式)。但我不知道该如何在植物课上实施这种模式。我明白如何实现它,以便它适合GUI。但是,我应该如何从我的工厂类访问模型。 – Affenbaum

+0

从GUI的视图模型访问模型是否是最好的方式,或者我的工厂类是否可以直接使用模型。问题是我需要的双向通信。当一些事情发生变化时,必须通知GUI,并且工厂也必须被告知。我不知道该怎么做,因为这个模型是我工厂的核心,这就是为什么我不知道它是从视图模型访问它的最佳方式。有什么你会推荐? – Affenbaum

+0

双向通信通常是在GUI端使用数据绑定完成的,并且在事物发生变化时通过从模型中引发事件来完成。在MVVM上查找任何教程,你会发现更多的细节。 – casablanca