![](/img/trans.png)
[英]What's the difference between Prototype design pattern and copy constructor in C++
[英]What is the difference between the Momento and Prototype Design Pattern?
Momento 和原型設計模式(來自 GOF)之間觀察到的差異:
使用 Momento 和原型設計模式可以獲得相同的結果:
這兩種模式之間有什么區別(除了已經列出的那些)? 我們什么時候會使用一個而不是另一個? 在我看來,原型模式是首選,以防需要對完整的 object 進行“快照”並將其堆疊在列表中以進行撤消操作。
原型模式描述了一種創建對象的方式。 對象的行為方式與原型模式無關。 Memento 模式描述了對象的行為方式。 對象的創建方式與 Memento 模式無關。
state 更廣泛地說,任何創建模式都可以產生任何行為(或結構或任何其他)模式所必需的對象。 這並不意味着創建模式以任何方式與它們創建的對象恰好實現的任何模式重疊。
Memento的本質是一個object,有兩個接口。 從 GoF 書第 285 頁,
Mementos 實際上有兩個接口。 Caretaker 看到一個狹窄的 Memento 接口——它只能將 memento 傳遞給其他對象。 相比之下,Originator 看到了一個廣泛的接口,一個允許它訪問所有數據的接口......
因此,Memento 模式的關鍵在於在一個 object 中實現這兩個接口。如果您選擇通過克隆來實例化 object,則可以使用兩種模式; 但是創造和行為之間有明確的界限。 一旦創建了克隆,原型模式就會停止。 當 object 同時使用窄接口和寬接口時,Memento 模式就開始了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.