1700470634
Boy boy=new Boy();
1700470635
1700470636
//声明出备忘录的管理者
1700470637
1700470638
Caretaker caretaker=new Caretaker();
1700470639
1700470640
//初始化当前状态
1700470641
1700470642
boy.setState(“心情很棒!”);
1700470643
1700470644
System.out.println(”=====男孩现在的状态======”);
1700470645
1700470646
System.out.println(boy.getState());
1700470647
1700470648
//需要记录下当前状态呀
1700470649
1700470650
caretaker.setMemento(boy.createMemento());
1700470651
1700470652
//男孩去追女孩,状态改变
1700470653
1700470654
boy.changeState();
1700470655
1700470656
System.out.println(”\n=====男孩追女孩子后的状态======”);
1700470657
1700470658
System.out.println(boy.getState());
1700470659
1700470660
//追女孩失败,恢复原状
1700470661
1700470662
boy.restoreMemento(caretaker.getMemento());
1700470663
1700470664
System.out.println(”\n=====男孩恢复后的状态======”);
1700470665
1700470666
System.out.println(boy.getState());
1700470667
1700470668
}
1700470669
1700470670
}
1700470671
1700470672
注意 看黑体部分,就修改了这么多,看看程序的逻辑是不是清晰了很多,需要备份的时候就创建一个备份,然后丢给备忘录管理者进行管理,要取的时候再从管理者手中拿到这个备份。这个备份者就类似于一个备份的仓库管理员,创建一个丢进去,需要的时候再拿出来。这就是备忘录模式。
1700470673
1700470674
1700470675
1700470676
1700470678
设计模式之禅 24.2 备忘录模式的定义
1700470679
1700470680
备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的世界中真实可行,其定义如下:
1700470681
1700470682
Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later.(在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。)
1700470683
[
上一页 ]
[ :1.700470634e+09 ]
[
下一页 ]