Java備忘錄模式(Memento模式)
Memento定義:memento是一個儲存另外一個物件內部狀態拷貝的物件,這樣以後就可以將該物件恢復到原先儲存的狀態。
Memento模式相對也比較好理解,我們看下列程式碼:
Memento模式的缺點是耗費大,如果內部狀態很多,再儲存一份,無意要浪費大量記憶體。
如下圖中 First Name是使用者已經輸入,Last Name沒有輸入,我們則提示紅字警告:
這種技術的實現,就是利用了Javabean的scope="request"或scope="session"特性,也就是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 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;
}
}
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()方法可以恢復。private int number;
private File file = null;
public Memento( Originator o){
number = o.number;
file = o.file;
}
}
Memento模式的缺點是耗費大,如果內部狀態很多,再儲存一份,無意要浪費大量記憶體。
Memento模式在Jsp+Javabean中的應用
在Jsp應用中,我們通常有很多表單要求使用者輸入,比如使用者註冊,需要輸入姓名和Email等,如果一些表項使用者沒有填寫或者填寫錯誤,我們希望在使用者按"提交Submit"後,通過Jsp程式檢查,發現確實有未填寫專案,則在該專案下紅字顯示警告或錯誤,同時,還要顯示使用者剛才已經輸入的表項。如下圖中 First Name是使用者已經輸入,Last Name沒有輸入,我們則提示紅字警告:
這種技術的實現,就是利用了Javabean的scope="request"或scope="session"特性,也就是Memento模式。
相關文章
- java設計模式-備忘錄模式(Memento)Java設計模式
- 備忘錄模式(Memento)模式
- 設計模式 - 備忘錄模式 ( Memento )設計模式
- JAVA設計模式之 備忘錄模式【Memento Pattern】Java設計模式
- C#設計模式系列:備忘錄模式(Memento)C#設計模式
- 設計模式--備忘錄模式Memento(行為型)設計模式
- Rust語言之GoF設計模式:備忘錄Memento模式RustGo設計模式
- 設計模式的征途—20.備忘錄(Memento)模式設計模式
- Net設計模式例項之備忘錄模式(Memento Pattern)(2)設計模式
- 備忘錄模式模式
- 設計模式----備忘錄模式設計模式
- 設計模式 - 備忘錄模式設計模式
- 折騰Java設計模式之備忘錄模式Java設計模式
- 19.java設計模式之備忘錄模式Java設計模式
- 行為型模式:備忘錄模式模式
- 設計模式(十九):備忘錄模式設計模式
- 設計模式之備忘錄模式設計模式
- JavaMementoPattern(備忘錄模式)Java模式
- 19_備忘錄模式模式
- 簡說設計模式——備忘錄模式設計模式
- 極簡設計模式-備忘錄模式設計模式
- GoLang設計模式11 - 備忘錄模式Golang設計模式
- Python設計模式-備忘錄模式Python設計模式
- 大話設計模式—備忘錄模式設計模式
- 設計模式漫談之備忘錄模式設計模式
- 23種設計模式之備忘錄模式設計模式
- 第 22 章 備忘錄模式模式
- 實驗 20:備忘錄模式模式
- Java進階篇設計模式之十二 ---- 備忘錄模式和狀態模式Java設計模式
- 深入淺出Java設計之備忘錄模式Java模式
- 設計模式:可複用物件導向軟體及基礎:4-7 物件行為模式:備忘錄模式(Memento)設計模式物件
- iOS設計模式之四:備忘錄模式和命令模式iOS設計模式
- 設計模式 | 備忘錄模式及典型應用設計模式
- Android備忘錄《單例模式》Android單例模式
- 設計模式(Swift) - 2.單例模式、備忘錄模式和策略模式設計模式Swift單例
- 行為型設計模式 - 備忘錄模式詳解設計模式
- 無廢話設計模式(16)行為型模式--備忘錄模式設計模式
- Swift 中的設計模式 #2 觀察者模式與備忘錄模式Swift設計模式