备忘录模式的探讨

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
----------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值