老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Memento模式與Prototype模式結合

我是菜鳥,剛開始學習設計模式,參考jdon的設計模式這本書,里面關于 Memento模式的例子如下(本人稍加修改)

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、網頁空間、營銷軟件、網站建設、璧山網站維護、網站推廣。

[@more@]我在另一個網站上的文章:
http://www.matrix.org.cn/thread.shtml?topicId=5c99e4e2-90d7-11dc-b8c0-a384f0e97a57&forumId=20

我是菜鳥,剛開始學習設計模式,參考jdon的設計模式這本書,里面關于 Memento模式的例子如下(本人稍加修改):

1. 原始數據類

public class Originator {

protected int number = 0;
protected String file = null;

public Originator() {
}

public void setNumber(int number){
this.number = number;
}

public int getNumber(){
return number;
}

public void setFile(String file){
this.file = file;
}

public String getFile(){
return file;
}

// 創建一個Memento
public Memento getMemento() {
return new Memento(this);
}

// 恢復到原始值
public void setMemento(Memento m) {
number = m.number;
file = m.file;
}
}

2.儲存類
public class Memento {

protected int number;
protected String file = null;

public Memento(Originator o) {
number = o.number;
file = o.file;
}
}

3.測試應用:
public void testMemento(){

Originator org = new Originator();
org.setNumber(10);
org.setFile("org_File");
Memento mem = new Memento(org);

org.setFile("new_File");
org.setNumber(20);

org.setMemento(mem);

assertEquals(org.getFile(),"org_File");
assertEquals(org.getNumber(),10);

}


測試ok! 可以恢復原來的值。頁面應用中的session,還有數據層的持久層 感覺也用了這種方法。
缺點:如果數據量很大時,不僅寫備份類不方便,而且也很耗費大,如果內部狀態很多,再保存一份,無意要浪費大量內存.

想到以前學過的 Prototype 模式,結合如下:

1.原始類
public class Originator implements Cloneable {

protected int number = 0;
protected String file = null;

protected Originator org = null;//用于存儲的類

public Originator() {

}

public void setNumber(int number) {
this.number = number;
}

public int getNumber() {
return number;
}

public void setFile(String file) {
this.file = file;
}

public String getFile() {
return file;
}

//取出原始值
public Originator getOriginator() {
return org;
}

//恢復到原始值
public void setOriginator() {
org =(Originator)this.clone();
}

//prototype 方法
public Object clone() {
Object object = null;
try {
object = super.clone();
} catch (CloneNotSupportedException exception) {
System.err.println("Originator is not Cloneable");
}
return object;
}
}

2.測試類如下:
public void testPrototype(){
Originator org = new Originator();
org.setNumber(10);
org.setFile("org_File");

//Memento mem = new Memento(org);

org.setOriginator();//將原數據放入存儲類中

org.setFile("new_File");
org.setNumber(20);

///org.setMemento(mem);

org.getOriginator();//得到原來值
///org.setMemento(mem);

assertEquals(org.getOriginator().getFile(),"org_File");
assertEquals(org.getOriginator().getNumber(),10);
}

結果一樣,這里簡單了類的編寫,不過可能 還是要浪費內存。

本文題目:Memento模式與Prototype模式結合
文章路徑:http://www.xueling.net.cn/article/pgogph.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 精品久久久久久中文字幕一区二区 | 国产精品欧美久久久 | 欧美生活1级 | 黄色aaa级片 | 国产在线播放你懂的 | 99国产精品久久久久久久久久 | 午夜私人影院在线观看 | 亚洲天堂AV在线 | 欧美日韩在线精品一区二区三区 | 亚洲人网 | 精品av中文字幕在线毛片 | 西出玉门40集全免费播放 | 国产精品99久久久久久一二区 | 黄色影片免费看 | 成人免费午夜视频69影院 | 亚洲视频aaa | 国产亚洲美女精品久久久2020 | 做爰吃奶全过程免费的网站 | 成人aa片免费观看视频 | AV无码专区 | 亚洲国产精品黑人久久久 | 久久一日本综合色鬼综合色 | 欧美亚洲国产精品 | 高清一级淫片a级中文字幕 亚洲欧洲日产国无高清码图片 | 国产精品88久久久久久妇女厕 | 成年人视频免费 | 亚洲午夜福利在线观看老司机 | 伊人精品视频在线观看 | 中文字幕一区二区三区四区不卡 | 国产良家自拍 | 蜜桃亚洲 | 97一区二区三区 | 久久免费看视频 | 久久国产精品一国产精品 | 中国农村熟妇性视频 | 中文字幕乱妇无码AV在线 | 国产人妻无码一区二区三区免费 | 成人爽a毛片免费啪啪 | 又色又爽又黄又硬的视频免费观看 | 亚洲精品一区二区三区不 | 天堂成人影院 |