Java設計形式之備忘錄形式(Memento形式)引見。本站提示廣大學習愛好者:(Java設計形式之備忘錄形式(Memento形式)引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Java設計形式之備忘錄形式(Memento形式)引見正文
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形式。