刚开始我调用了ISnapshotService,这就是它的作用
CountrySnapshot snapshot = snapshotService.CreateSnapshot<Country, CountrySnapshot>(country);
为此,国家必须看起来像这样
public class Country : ISnapshottable<CountrySnapshot>
{
public CountrySnapshot CreateSnapshot(ISnapshotService snapshotService) { }
}
和CountrySnapshot必须如下所示
public class CountrySnapshot : ISnapshotFor<Country> { }
我使用了名称“Snapshot”,因为我最初打算使用此服务为系统的末期快照创建不可变的快照,以便进行会计。但是我发现有时候结果不会是不可变的快照,例如StockLocation可能会创建一个StockAudit(它不是快照)。
所以,请记住,这不再只是创建快照,我需要为这3个接口提供更好的名称。
欢迎任何建议。感谢
答案 0 :(得分:1)
答案 1 :(得分:0)
似乎很像memento。快照将是Memento,而Snapshottable将是一个将其保存功能外包给SnapshotService的Originator。
编辑:同意,这不是纪念品,虽然结构相似。可能是Temporal Object或 - 你知道什么 - Snapshot的情况。答案 2 :(得分:0)
我认为它更像是原型模式,因为它根据现有对象的状态创建新对象。
我已经去了