From 6873ed2617bcc97aefade19eac5fb3267428491a Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 30 Oct 2026 20:19:43 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=20-=20=E5=A4=87=E5=BF=98=E5=BD=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重新绘制备忘录类图;补充类图与示例代码中宽窄接口的说明,精简汉化代码注释;更新 JDK 应用中的 StateEdit 案例。 --- notes/pics/dp-memento.png | Bin 299133 -> 298055 bytes notes/设计模式 - 备忘录.md | 57 ++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 33 deletions(-) diff --git a/notes/pics/dp-memento.png b/notes/pics/dp-memento.png index 097a22341a9a58de396aebadf14d1645a6bac986..9290b94b4d3dc2deb6444f196574ab16fd38609c 100644 GIT binary patch delta 43686 zcmX_ocRZH;8+JzA3EfJvR~cE^d)`vASIElF-ZH{vQxcNBXLbo?&uk(Y*;|P0LgGC= zzxREwKc0`La^KhW{eI8$JkH}d&g)<1)y~AL{=rzm*p)ax77&$06Gs`e^Bk_649Az+ zKSdRE#UtAK_w7qRe$*~@*RLuYovvN~ELzU?A}}095a_?5Om1Qsv-GEPZ_nqQP|$nQ zpI&G4mmOcHq=c} z%t3D0UmdSzeo|gWhDS%);uL73-U^ro2;){95vehn1^~<7a#vi%; zapD(Ra83So;`&|5^=6|g)qNc?2F$9dU3$rHsS!?jjpFKP@-VcGz3q?1nU1Nh@NaHa z>eOVtQ(awS({247WDIT$3@Z7zXu_$MUlCr`v$}LEp;spN(q+T=kC*XX@g2zTN^k#W zR=D_CytckUgqj%17zh)4l&8^R*uS{rDV{D(Z(OeHG#PtW5*|O880)%5;eM3V>EUkg zowI*`WIohG2p>#>#B9Tt^xSp=A zuE4;+e9_@IZ{9>lM-L5YahWy>`vj z)%9$W)7a6?jgv>v)paoQ(vN>MW?_cCDl}0 zOKI);SV2`4Ioe&W^E(soC)4SD6VHr&=dGm{;whr1pG;6>UZq;mOI1^xaOd&I)NiyY z3HqD~`pJovu85mWqoehYRdWkdJ*I^Al^=qZQXwHBJUl$fnxXTooScyn5yd4XcCTld zV&q+1Tyizms8-yJzh3sY;8w&Z>Rfg);ZX`C!rs>&r)K?V%1y4T8Ctm$<@65IEppHp zLg2Q_A@hX=)-t~fH@UcQ7CHNOaYaD!T0ZP_l@t)qa}~z^>M

o;Y?N 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 G3;zen=E*hy delta 44803 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 z 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 V{VBNk3$L|c`Fd@lRa5pR{{yD4c@Y2r diff --git a/notes/设计模式 - 备忘录.md b/notes/设计模式 - 备忘录.md index 0c27b4ce..355eb54e 100644 --- a/notes/设计模式 - 备忘录.md +++ b/notes/设计模式 - 备忘录.md @@ -4,27 +4,31 @@ 在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到之前保存的状态。 ### 类图 -- Originator:原始对象 -- Caretaker:负责保存好备忘录 -- Memento:备忘录,存储原始对象的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 +- Originator:原始对象,负责创建备忘录和用备忘录恢复状态; +- Caretaker:负责保存好备忘录; +- Memento:备忘录,存储原始对象的状态。 + +备忘录对外提供两个接口:提供给 Caretaker 的窄接口,只能保存和传递备忘录,看不到其中的数据;提供给 Originator 的宽接口,可以读出恢复状态所需的所有数据。这样 Caretaker 保管备忘录时不依赖其中的数据,也不会破坏封装。


### 实现 以下实现了一个简单计算器程序,可以输入两个值,然后计算这两个值的和。备忘录模式允许将这两个值存储起来,然后在某个时刻用存储的状态进行恢复。 +代码中的角色:CalculatorImp 是 Originator;PreviousCalculationToCareTaker 是窄接口,没有任何方法;PreviousCalculationToOriginator 是宽接口;PreviousCalculationImp 同时实现这两个接口;Client 是 Caretaker,它只拿到窄接口类型的备忘录。需要注意的是,这里的两个接口都是 public 的,Client 强转后仍能读出数据,隔离只是约定;要真正禁止读取,可以去掉公开的宽接口,把备忘录实现为 Originator 的私有静态嵌套类,只实现窄接口,由 Originator 在内部读取它的字段。 + 实现参考:[Memento Pattern - Calculator Example - Java Sourcecode](https://www.oodesign.com/memento-pattern-calculator-example-java-sourcecode.html) ```java /** - * Originator Interface + * Originator 接口 */ public interface Calculator { - // Create Memento + // 创建备忘录 PreviousCalculationToCareTaker backupLastCalculation(); - // setMemento + // 用备忘录恢复状态 void restorePreviousCalculation(PreviousCalculationToCareTaker memento); int getCalculationResult(); @@ -37,7 +41,7 @@ public interface Calculator { ```java /** - * Originator Implementation + * Originator 实现 */ public class CalculatorImp implements Calculator { @@ -46,7 +50,7 @@ public class CalculatorImp implements Calculator { @Override public PreviousCalculationToCareTaker backupLastCalculation() { - // create a memento object used for restoring two numbers + // 创建保存两个数的备忘录 return new PreviousCalculationImp(firstNumber, secondNumber); } @@ -58,7 +62,7 @@ public class CalculatorImp implements Calculator { @Override public int getCalculationResult() { - // result is adding two numbers + // 结果是两个数的和 return firstNumber + secondNumber; } @@ -76,9 +80,7 @@ public class CalculatorImp implements Calculator { ```java /** - * Memento Interface to Originator - * - * This interface allows the originator to restore its state + * 提供给 Originator 的宽接口,用于恢复状态 */ public interface PreviousCalculationToOriginator { int getFirstNumber(); @@ -88,18 +90,16 @@ public interface PreviousCalculationToOriginator { ```java /** - * Memento interface to CalculatorOperator (Caretaker) + * 提供给 Caretaker 的窄接口 */ public interface PreviousCalculationToCareTaker { - // no operations permitted for the caretaker + // Caretaker 不能进行任何操作 } ``` ```java /** - * Memento Object Implementation - *

- * Note that this object implements both interfaces to Originator and CareTaker + * 备忘录实现,同时实现了宽接口和窄接口 */ public class PreviousCalculationImp implements PreviousCalculationToCareTaker, PreviousCalculationToOriginator { @@ -126,37 +126,28 @@ public class PreviousCalculationImp implements PreviousCalculationToCareTaker, ```java /** - * CareTaker object + * Caretaker */ public class Client { public static void main(String[] args) { - // program starts Calculator calculator = new CalculatorImp(); - // assume user enters two numbers + // 用户输入两个数 calculator.setFirstNumber(10); calculator.setSecondNumber(100); - - // find result System.out.println(calculator.getCalculationResult()); - // Store result of this calculation in case of error + // 保存这次计算,以便出错时恢复 PreviousCalculationToCareTaker memento = calculator.backupLastCalculation(); - // user enters a number + // 用户输入了一个错误的数 calculator.setFirstNumber(17); - - // user enters a wrong second number and calculates result calculator.setSecondNumber(-290); - - // calculate result System.out.println(calculator.getCalculationResult()); - // user hits CTRL + Z to undo last operation and see last result + // 用户按下 Ctrl + Z,恢复到上一次计算 calculator.restorePreviousCalculation(memento); - - // result restored System.out.println(calculator.getCalculationResult()); } } @@ -169,9 +160,9 @@ public class Client { ``` ### JDK 中的应用 -- java.io.Serializable +javax.swing.undo.StateEdit 用到了同样的思路:被编辑的对象实现 StateEditable,修改前后由对象把自己的状态写入 Hashtable,撤销或重做时再用它恢复。序列化可以用来把备忘录保存到文件中,但 Serializable 只是一个标记接口,本身不构成备忘录。 ## 参考资料 - 弗里曼. Head First 设计模式 [M]. 中国电力出版社, 2007. -- Gamma E. 设计模式: 可复用面向对象软件的基础 [M]. 机械工业出版社, 2007. +- Gamma E. 设计模式:可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.