厦门市建设局网站住房保障专栏,高端网站登录入口,.net flash网站模板,企业应加强自身网站建设文章目录 一、备忘录模式定义二、例子2.1 菜鸟例子2.1.1 定义副本类2.1.2 定义对象2.1.3 定义CareTaker 类2.1.3 使用 2.2 JDK —— Date 三、其他设计模式 一、备忘录模式定义
类型#xff1a; 行为型模式 目的#xff1a; 保存一个对象的某个状态#xff0c;以便在适当的… 文章目录 一、备忘录模式定义二、例子2.1 菜鸟例子2.1.1 定义副本类2.1.2 定义对象2.1.3 定义CareTaker 类2.1.3 使用 2.2 JDK —— Date 三、其他设计模式 一、备忘录模式定义
类型 行为型模式 目的 保存一个对象的某个状态以便在适当的时候恢复对象。 使用场景 1、需要保存/恢复数据的相关状态场景。 2、提供一个可回滚的操作。
二、例子
2.1 菜鸟例子
2.1.1 定义副本类
public class Memento {private String state;public Memento(String state){this.state state;}public String getState(){return state;}
}2.1.2 定义对象
菜鸟的例子定义Originator 对象的同时还提供saveStateToMemento、getStateFromMemento的副本类互转的方法。
public class Originator {private String state;public void setState(String state){this.state state;}public String getState(){return state;}public Memento saveStateToMemento(){return new Memento(state);}public void getStateFromMemento(Memento Memento){state Memento.getState();}
}个人想法或许还能将saveStateToMemento、getStateFromMemento方法和Originator对象分离
2.1.3 定义CareTaker 类
该类是用来保存副本类的。
import java.util.ArrayList;
import java.util.List;public class CareTaker {private ListMemento mementoList new ArrayListMemento();public void add(Memento state){mementoList.add(state);}public Memento get(int index){return mementoList.get(index);}
}2.1.3 使用
public class MementoPatternDemo {public static void main(String[] args) {Originator originator new Originator();CareTaker careTaker new CareTaker();originator.setState(State #1);originator.setState(State #2);careTaker.add(originator.saveStateToMemento());originator.setState(State #3);careTaker.add(originator.saveStateToMemento());originator.setState(State #4);System.out.println(Current State: originator.getState()); originator.getStateFromMemento(careTaker.get(0));System.out.println(First saved State: originator.getState());originator.getStateFromMemento(careTaker.get(1));System.out.println(Second saved State: originator.getState());}
}如果CareTaker 类的 List换成栈结构获取时pop弹出该对象保存时push存入副本这样是否就能实现编辑器的撤销和重做
2.2 JDK —— Date Date类的方法getTime()和setTime()可以用来获取和设置Date对象的时间它们实际上就是备忘录模式的原发器和备忘录角色。 这是我百度搜到的但如果这样也算的话那岂不是拥有get和set方法的类都可以称得上备忘录模式 但按照备忘录基本概念好像确实可以算是。 三、其他设计模式
创建型模式 结构型模式
1、设计模式——装饰器模式Decorator Pattern Spring相关源码
行为型模式
1、设计模式——访问者模式Visitor Pattern Spring相关源码2、设计模式——中介者模式Mediator Pattern JDK相关源码3、设计模式——策略模式Strategy Pattern Spring相关源码4、设计模式——状态模式State Pattern5、设计模式——观察者模式Observer Pattern Spring相关源码6、设计模式——备忘录模式Memento Pattern7、设计模式——模板方法模式Template Pattern Spring相关源码