Android的开发之&java23中设计模式------备忘录模式

备忘录模式,即保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。

模式结构

发起者角色(Originator):负责创建一个备忘录用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。
备忘录角色(Memento):负责存储Originator对象的内部状态,并可以防止Originator以外的其他对象访问备忘录。
管理者角色(CareTake):负责保存好备忘录。
/**
 * Created by Administrator on 2017-10-11.
 * 管理者角色:负责管理备忘录类,示例只保存了一个备忘录对象,可以通过设置栈保存多个对象
 */

public class CareTaker {
    private EmpMemento empMemento;

    public EmpMemento getEmpMemento(){
        return empMemento;
    }

    public void setEmpMemento(EmpMemento empMemento){
        this.empMemento=empMemento;
    }
}



/**
 * Created by Administrator on 2017-10-11.
 * 发起者角色:
 */

public class Emp {
    private String name;
    private int age;
    private String sex;

    public EmpMemento memento(){
        return new EmpMemento(this);
    }

    public void recovery(EmpMemento empMemento){
        this.name=empMemento.getName();
        this.age=empMemento.getAge();
        this.sex=empMemento.getSex();
    }

    public Emp(String name, int age, String sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
/**
 * Created by Administrator on 2017-10-11.
 * 备忘录角色:普通javabean
 */

public class EmpMemento {
    private String name;
    private int age;
    private String sex;

    public EmpMemento(Emp emp){
        this.name=emp.getName();
        this.age=emp.getAge();
        this.sex=emp.getSex();
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
/**
 * 备忘录模式(Memento)
 */
public class MementoMethodActivity extends AppCompatActivity {
    /**
     * 
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_memento_method);

        CareTaker careTaker=new CareTaker();

        Emp emp=new Emp("张飞",12,"男");
        System.out.print(emp.getName()+emp.getAge()+emp.getSex());

        careTaker.setEmpMemento(emp.memento());//进行备忘

        emp.setAge(20);
        emp.setSex("女");
        System.out.print(emp.getName()+emp.getAge()+emp.getSex());

        emp.recovery(careTaker.getEmpMemento());//数据恢复
        System.out.print(emp.getName()+emp.getAge()+emp.getSex());
    }
}

 
 
github地址:https://github.com/zyj18410105150/DesignMode

猜你喜欢

转载自blog.csdn.net/jie1123161402/article/details/80383790