設計模式之Memento(備忘機制)
来源:互联网 发布:网络英雄洛克人第一部 编辑:程序博客网 时间:2024/05/22 03:32
Memento定義:
memento是一個保存另外一個物件內部狀態拷貝的物件。這樣以後就可以將該物件恢復到原先保存的狀態。
Memento模式相對也比較好理解,我們看下列代碼:
public class Originator {
private int number;
private File file = null;
public Originator(){}
// 創建一個Memento
public Memento getMemento(){
return new Memento(this);
}
// 恢復到原始值
public void setMemento(Memento m){
number = m.number;
file = m.file;
}
}
我們再看看Memento類別:
private class Memento implements java.io.Serializable{private int number;
private File file = null;
public Memento( Originator o){
number = o.number;
file = o.file;
}
}
可見 Memento中保存了Originator中的number和file的值。 通過呼叫Originator中number和file值改變的話,通過呼叫setMemento()方法可以恢復。
Memento模式的缺點是耗費大,如果內部狀態很多,再保存一份,無意要浪費大量記憶體。
Memento模式在Jsp+Javabean中的應用
在Jsp應用中,我們通常有很多表單要求用戶輸入,比如用戶註冊,需要輸入姓名和Email等, 如果一些表項用戶沒有填寫或者填寫錯誤,我們希望在用戶按"提交Submit"後,通過Jsp程式檢查,發現確實有未填寫專案,則在該專案下紅字顯示警告或錯誤,同時,還要顯示用戶剛才已經輸入的表項。
如下圖中 First Name是用戶已經輸入,Last Name沒有輸入,我們則提示紅字警告.:
這種技術的實現,就是利用了Javabean的scope="request"或scope="session"特性,也就是Memento模式。
具體示例和代碼見 JavaWorld的英文原文 , Javabean表單輸入特性參見我的另外一篇文章。
- 設計模式之Memento(備忘機制)
- 設計模式之Memento(備忘機制)
- 设计模式之Memento
- 设计模式之Memento
- 设计模式之 memento
- 设计模式之MemenTo模式
- 行为模式之Memento模式
- Behavioral模式之Memento模式
- 设计模式之Memento模式
- 设计模式之Memento(备忘录)
- 行为模式之六---Memento
- 设计模式简单代码之Memento模式
- 设计模式之Memento备忘模式
- 设计模式读书笔记之备忘录模式(Memento)
- 设计模式之备忘录模式Memento
- 设计模式之备忘录模式(Memento Pattern)
- 常见设计模式之Memento模式
- java设计模式之备忘录模式Memento
- 設計模式之Chain of Responsibility(職責鏈)
- 失业了....
- 設計模式之Command
- 五种提高 SQL 性能的方法
- 設計模式之Observer
- 設計模式之Memento(備忘機制)
- 設計模式之Flyweight(享元)
- 設計模式之Template
- 設計模式之Bridge
- 設計模式之Decorator(油漆工)
- 設計模式之Composite(組合)
- 設計模式之Adapter(適配器)
- 設計模式之Proxy(代理)
- 設計模式之Facade(外觀)