2010-12-01 143 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