您的位置:首页 > 其它

行为模式之备忘录模式(利用窄接口)

2014-09-29 10:25 344 查看
package com.djk.design.action.memory2;

public class Person
{
public Person(String name, String age)
{
super();
this.name = name;
this.age = age;
}

private String name;

private String age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public IMemory createMemory()
{
return new Memory(name, age);
}

public void rollback (IMemory iMemory)
{
Memory memory = (Memory)iMemory;
this.name =memory.getrollBackName();
this.age = memory.getrollBackAge();
}

private class Memory implements IMemory
{
private String name;

private String age;

public Memory(String name, String age) {
super();
Memory.this.name = name;
Memory.this.age = age;
}

private String getrollBackName()
{
return Memory.this.name;
}

private String getrollBackAge()
{
return Memory.this.age;
}
}

@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}

}
package com.djk.design.action.memory2;

public class Manager
{
private IMemory iMemory;

public IMemory getiMemory() {
return iMemory;
}

public void setiMemory(IMemory iMemory) {
this.iMemory = iMemory;
}
}
package com.djk.design.action.memory2;

public interface IMemory
{

}


package com.djk.design.action.memory2;

public class Client
{
public static void main(String[] args) {
Person person = new Person("djk", "24");
Manager manager = new Manager()	;
manager.setiMemory(person.createMemory());
System.out.println(person);
person.setAge("25");
System.out.println(person);
person.rollback(manager.getiMemory());
System.out.println(person);
}
}
这个版本的好处是备忘录对象被封装了,外界改不了备忘录的状态,备忘录的状态肯定是第一次存的那个状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: