1700470866
设计模式之禅 24.4 备忘录模式的扩展
1700470867
1700470868
24.4.1 clone方式的备忘录
1700470869
1700470870
大家还记得在第13章中讲的原型模式吗?我们可以通过复制的方式产生一个对象的内部状态,这是一个很好的办法,发起人角色只要实现Cloneable就成,比较简单,我们来看类图,如图24-5所示。
1700470871
1700470872
1700470873
1700470874
1700470875
图24-5 Clone方式的备忘录
1700470876
1700470877
从类图上看,发起人角色融合了发起人角色和备忘录角色,具有双重功效,如代码清单24-12所示。
1700470878
1700470879
代码清单24-12 融合备忘录的发起人角色
1700470880
1700470881
public class Originator implements Cloneable{
1700470882
1700470883
//内部状态
1700470884
1700470885
private String state=””;
1700470886
1700470887
public String getState(){
1700470888
1700470889
return state;
1700470890
1700470891
}
1700470892
1700470893
public void setState(String state){
1700470894
1700470895
this.state=state;
1700470896
1700470897
}
1700470898
1700470899
//创建一个备忘录
1700470900
1700470901
public Originator createMemento(){
1700470902
1700470903
return this.clone();
1700470904
1700470905
}
1700470906
1700470907
//恢复一个备忘录
1700470908
1700470909
public void restoreMemento(Originator_originator){
1700470910
1700470911
this.setState(_originator.getState());
1700470912
1700470913
}
1700470914
[
上一页 ]
[ :1.700470865e+09 ]
[
下一页 ]