1.代码
/*
This is a free Program, You can modify or redistribute it under the terms of GNU
*Description:一个简单的备忘录模式
*备忘录模式: http://baike.baidu.com/view/3591132.htm
*Language: Java
*Development Environment: Eclipse
*Author: Wangzhicheng
*E-mail: 2363702560@qq.com
*Date: 2012/10/24
*/
/*
* 备忘录类,保存发起者的所有状态
* */
class Memo {
private Object state1=new Object(); //与Originator的状态一致
private Object state2=new Object();
private Object state3=new Object();
private Object state4=new Object();
public Memo() {
}
public void setState1(Object state) {
this.state1=state;
}
public final Object getState1() {
return this.state1;
}
public void setState2(Object state) {
this.state2=state;
}
public final Object getState2() {
return this.state2;
}
public void setState3(Object state) {
this.state3=state;
}
public final Object getState3() {
return this.state3;
}
public void setState4(Object state) {
this.state4=state;
}
public final Object getState4() {
return this.state4;
}
}
/*
* ManageMemo负责管理Memo类
* 不涉及Memo的内部操作和属性
* */
class ManageMemo {
private Memo mMemo;
public ManageMemo() {
}
public void SetMemo(Memo m) {
this.mMemo=m;
}
public final Memo GetMemo() {
return this.mMemo;
}
}
/*
* Originator主要是用来创建或者恢复状态
* */
class Originator {
private Object state1=new Object(); //状态1
private Object state2=new Object(); //状态2
private Object state3=new Object(); //状态3
private Object state4=new Object(); //状态4
public Originator() {
}
public Originator(Object s1,Object s2,Object s3,Object s4) {
state1=s1;
state2=s2;
state3=s3;
state4=s4;
}
public void setState1(Object state) {
this.state1=state;
}
public final Object getState1() {
return this.state1;
}
public void setState2(Object state) {
this.state2=state;
}
public final Object getState2() {
return this.state2;
}
public void setState3(Object state) {
this.state3=state;
}
public final Object getState3() {
return this.state3;
}
public void setState4(Object state) {
this.state4=state;
}
public final Object getState4() {
return this.state4;
}
/*
* 创建备忘录类的方法
* */
public Memo CreateMemo() {
Memo m=new Memo();
m.setState1(this.getState1());
m.setState2(this.getState2());
m.setState3(this.getState3());
m.setState4(this.getState4());
return m;
}
public void RestoreMemo(Memo m) {
this.setState1(m.getState1());
this.setState2(m.getState2());
this.setState3(m.getState3());
this.setState4(m.getState4());
}
public final void showState() {
System.out.println("当前各状态是:");
System.out.println(this.getState1());
System.out.println(this.getState2());
System.out.println(this.getState3());
System.out.println(this.getState4());
System.out.println("----------------");
}
}
/*
* 客户方程序
* */
public class MemoPattern {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个当前对象,有4种状态
Originator object=new Originator("state1","state2","state3","state4");
object.showState();
//保存对象的状态
ManageMemo manager=new ManageMemo();
manager.SetMemo(object.CreateMemo());
object.setState1("state01");
object.setState2("state02");
object.setState3("state03");
object.setState4("state04");
object.showState();
//恢复对象保存的状态
object.RestoreMemo(manager.GetMemo());
object.showState();
}
}
2. 测试
当前各状态是:
state1
state2
state3
state4
----------------
当前各状态是:
state01
state02
state03
state04
----------------
当前各状态是:
state1
state2
state3
state4
----------------