2010-12-01 144 views
0

起初我在ISnapshotService叫,这是它做什么这种模式的名称是什么?

CountrySnapshot snapshot = snapshotService.CreateSnapshot<Country, CountrySnapshot>(country); 

对于这项工作国家必须看起来像这样

public class Country : ISnapshottable<CountrySnapshot> 
{ 
    public CountrySnapshot CreateSnapshot(ISnapshotService snapshotService) { } 
} 

和CountrySnapshot必须看起来像这样

public class CountrySnapshot : ISnapshotFor<Country> { } 

我使用了名称“快照”,因为我最初打算使用此服务为类的快照结束创建不可变的快照,系统为会计目的。然而,我发现有时结果不会是不可变的快照,例如StockLocation可能会创建一个StockAudit(这不是快照)。

因此,请记住,这不会再创建快照我需要为这3个接口提供更好的名称。

  1. ISnapshotService
  2. ISnapshottable - 国家实现这表明它可以创建一个CountrySnapshot
  3. ISnapshotFor - CountrySnapshot实现这表明它是从一个国家

任何建议欢迎创建。谢谢

回答

0

看起来很像memento。快照将成为Memento,Snapshottable将成为将其保存功能外包给SnapshotService的创始人。

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

1
+0

如果我没有记错的工厂模式将创建默认状态的新对象,而这个模式创建新对象状态基于另一个现有对象。 – 2010-12-02 09:27:03

+0

工厂可以做你想让他们做的任何事情。这与默认状态无关。 – 2011-09-23 13:09:16

0

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

我已经走了

  1. IPrototypeService
  2. IPrototype
  3. IPrototypedFrom