这种模式的名称是什么?

时间:2010-12-01 21:23:07

标签: oop design-patterns

刚开始我调用了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个接口提供更好的名称。

  1. ISnapshotService
  2. ISnapshottable - 国家/地区实现此目的以表明它可以创建CountrySnapshot
  3. ISnapshotFor - CountrySnapshot实现此功能以显示它是从国家/地区
  4. 创建的

    欢迎任何建议。感谢

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

似乎很像memento。快照将是Memento,而Snapshottable将是一个将其保存功能外包给SnapshotService的Originator。

编辑:同意,这不是纪念品,虽然结构相似。可能是Temporal Object或 - 你知道什么 - Snapshot的情况。

答案 2 :(得分:0)

我认为它更像是原型模式,因为它根据现有对象的状态创建新对象。

我已经去了

  1. IPrototypeService
  2. IPrototype
  3. IPrototypedFrom