将对象的状态保存到历史记录列表中并进行恢复的最佳做法是什么



我有以下场景:

我正在设计一个MVVM应用程序,它通过串行端口或其他方式与一些计算机外部设备通信。每个Device都有一些属性,如id、名称等,另外还由不同的Module组成,它们有自己的属性。我有一种xml数据库来保存和加载设备。每个Device都有自己的文件。总之:

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

Device_Type_AModule_AModule_B 组成

Device_Type_BModule_AModule_C 组成

Modules的属性是通过通信填充的。现在,我想将Modules的状态保存为一种模块状态历史,并保存到当前设备的xml文件中。

这样做的最佳做法是什么?创建一个基于Fowlers快照的ModuleSnapshot类并存储它有用吗?或者我必须做一种不可变的值对象并将其存储到文件中?

设备是实体,但模块历史记录条目感觉像是值对象。我也想显示已加载设备文件的历史记录。是否需要一个Module类作为通信内容的Model,以及一个类作为它的不可变值对象副本(如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; }
    // ...
}

保存对象状态以备将来使用。。。。。。。。。Memento图案

相关内容

  • 没有找到相关文章

最新更新