Java 之 23 种设计模式解析——19、备忘录模式(Memento)

类的状态

19、备忘录模式(Memento)

主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下:

Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,用来保存value值。Memento类是备忘录类,Storage类是存储备忘录的类,持有Memento类的实例,该模式很好理解。直接看源码:

1. public class Original {
2.
3.	private String value;
4.
5.	public String getValue() {
6.	return value;
7.	}
8.
9.	public void setValue(String value) {
10.	this.value = value;
11.	}
12.
13.	public Original(String value) {
14.	this.value = value;
15.	}
16.
17.	public Memento createMemento(){
18.	return new Memento(value);
19.	}
20.
21.	public void restoreMemento(Memento memento){
22.	this.value = memento.getValue();
23.	}
24. }
1. public class Memento {
2.
3.	private String value;
4.
5.	public Memento(String value) {
6.	this.value = value;
7.	}
8.
9.	public String getValue() {
10.	return value;
11.	}
12.
13.	public void setValue(String value) {
14.	this.value = value;
15.	}
16. }
1. public class Storage {
2.
3.	private Memento memento;
4.
5.	public Storage(Memento memento) {
6.	this.memento = memento;
7.	}
8.
9.	public Memento getMemento() {
10.	return memento;
11.	}
12.
13.	public void setMemento(Memento memento) {
14.	this.memento = memento;
15.	}
16. }

 

测试类:

1. public class	Test {
2.
3.	public static void main(String[] args) {
4.
5.	// 创建原始类
6.	Original origi = new Original("egg");
7.
8.	// 创建备忘录
9.	Storage storage = new Storage(origi.createMemento());
10.
11.	// 修改原始类的状态
12.	System.out.println("初始化状态为:" + origi.getValue());
13.	origi.setValue("niu");
14.	System.out.println("修改后的状态为:" + origi.getValue());
15.
16.	// 回复原始类的状态
17.	origi.restoreMemento(storage.getMemento());
18.	System.out.println("恢复后的状态为:" + origi.getValue());
19.	}
20. }

输出:

初始化状态为:egg
修改后的状态为:niu
恢复后的状态为:egg

简单描述下:新建原始类时,value被初始化为egg,后经过修改,将value的值置为niu,最后倒数第二行进行恢复状态,结果成功恢复了。其实我觉得这个模式叫“备份-恢复”模式最形象。

目录:(点击进入相应页面)

概述、六大原则

一、创建模式

0、简单工厂模式

1.工厂方法模式(Factory Method)

2、抽象工厂模式

3、单例模式(Singleton)

4、建造者模式(Builder)

5、原型模式(Prototype)

二、结构模式(7种)

6、适配器模式

7、装饰模式(Decorator)

8、代理模式(Proxy)

9、外观模式(Facade)

10、桥接模式(Bridge)

11、组合模式(Composite

12、享元模式(Flyweight)

三、关系模式(11种)

13、策略模式(strategy)

14、模板方法模式(Template Method)

15、观察者模式(Observer)

16、迭代子模式(Iterator)

17、责任链模式(Chain of Responsibility)

18、命令模式(Command)

19、备忘录模式(Memento

20、状态模式(State)

21、访问者模式(Visitor)

22、中介者模式(Mediator)

23、解释器模式(Interpreter)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值