From b4a25d52a42525d3493322d225c8e66e73cca1e9 Mon Sep 17 00:00:00 2001 From: liangqi Date: Thu, 15 Oct 2020 17:44:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=A4=87=E5=BF=98=E5=BD=95?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pattern-memento/README.md | 14 +++++++++++++- .../src/main/java/org/panda/memento/Gamer.java | 8 ++++++-- .../src/main/java/org/panda/memento/Memento.java | 3 ++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pattern-memento/README.md b/pattern-memento/README.md index 79b60cd..d55d42c 100644 --- a/pattern-memento/README.md +++ b/pattern-memento/README.md @@ -1,2 +1,14 @@ -备忘录模式 +# 备忘录模式 + +## 优点 +* 它提供了一种状态恢复机制,使得用户可以方便回到特定的历史步骤,当前的状态或者存在问题时,可以使用暂时存储其他的备忘录将状态复原. +* 备忘录实现了对信息的封装,一个备忘录对象是一种原发器对象状态的表示,不会被其他diamond所感动。备忘录保持了原发器的状态,采用列表、堆栈等集合来存储备忘录对象可以实现多次撤销操作. +## 缺点 +* 资源消耗过大,如果需要保存的原发器类的成员变量太多,就不可避免需要占用大量的存储空间,每保存一次对象都是需要消耗一定的系统资源. +## 适用场景 +* 保存一个对象在某一个时刻的全部状态或部分状态,这样以后需要恢复到先前的状态,实现撤销操作 +* 防止外界对象破会一个对象历史状态的封装性,避免将对象历史状态的实现细节暴露给外界对象. + + + diff --git a/pattern-memento/src/main/java/org/panda/memento/Gamer.java b/pattern-memento/src/main/java/org/panda/memento/Gamer.java index ce9daed..82bf10b 100644 --- a/pattern-memento/src/main/java/org/panda/memento/Gamer.java +++ b/pattern-memento/src/main/java/org/panda/memento/Gamer.java @@ -40,7 +40,9 @@ public class Gamer { } } - // 拍摄快照 + /** + * 创建快照 + */ public Memento createMemento(){ Memento memento = new Memento(money); Iterator it = fruits.iterator(); @@ -54,7 +56,9 @@ public class Gamer { return memento; } - //撤销 + /** + * 撤销 + */ public void restoreMemento(Memento memento){ this.money = memento.money; this.fruits = memento.getFruits(); diff --git a/pattern-memento/src/main/java/org/panda/memento/Memento.java b/pattern-memento/src/main/java/org/panda/memento/Memento.java index 6e04010..1b5a053 100644 --- a/pattern-memento/src/main/java/org/panda/memento/Memento.java +++ b/pattern-memento/src/main/java/org/panda/memento/Memento.java @@ -4,7 +4,8 @@ import java.util.ArrayList; import java.util.List; /** - * 纪念品 + * 快照 + * @author qi */ public class Memento { int money;