2012-08-01 74 views
1

我有以下场景:将对象的状态保存到历史列表中并将其恢复的最佳做法是什么?

我正在设计一个MVVM应用程序,它通过串口或某些东西与一些计算机外部设备进行通信。每个Device都有一些属性,如ID,名称等,另外还包含不同的Module以及它们自己的属性。 我有一种XML数据库来保存和加载设备。每个Device都有自己的文件。无论如何:

该应用程序通过一种存储库加载所有文件,并提供一个Devices的列表来选择实际连接的一个或创建一个新的。当我选择了当前的Device时,根据设备的类型,我得到一个表示Modules列表的页面。即:

Device_Type_AModule_AModule_B

Device_Type_BModule_AModule_C

...

Modules的性能是通过通讯填补。现在我想将Modules的状态保存为当前设备的xml文件中的一种模块状态历史记录。

这样做的最佳做法是什么?创建基于Fowlers SnapshotModuleSnapshot课程是否有用并将其存储?或者我必须做一种不可变的值对象并将其存储到文件中?

设备是实体,但模块历史条目感觉像值对象。我也想显示加载的设备文件的历史记录。是否需要将Module类作为通信内容的模型,以及类似于ModuleHistory的类的不可变值对象副本的类?

这样的事情?

public class Device_Type_A : DeviceBase 
{ 
    // Some special Type_A properties ... 
    public string Type_A_Shape{get; set;} 
    // ...  
} 

public class DeviceBase 
{ 
    public string Id { get; private set; } 
    public string DeviceName { get; private set; } 
    public List<ModuleHistory> History { get; private set; } 
    // ... 
} 

回答

2

保存对象以供将来使用的状态.........备忘录模式

相关问题