中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

一般做網(wǎng)站要多少錢怎樣優(yōu)化網(wǎng)站排名靠前

一般做網(wǎng)站要多少錢,怎樣優(yōu)化網(wǎng)站排名靠前,做義工的同城網(wǎng)站,工業(yè)設(shè)計公司有哪些?跟多內(nèi)容,前往IT-BLOG ? 備忘錄模式(Memento Pattern): 保存對象的某個狀態(tài),以便在未來需要的時候進行數(shù)據(jù)的恢復(fù)。相當(dāng)容易理解,舉個簡單的例子:Word 軟件在編輯時按 CtrlZ 組合鍵時能撤銷當(dāng)…

?跟多內(nèi)容,前往IT-BLOG
?
備忘錄模式(Memento Pattern): 保存對象的某個狀態(tài),以便在未來需要的時候進行數(shù)據(jù)的恢復(fù)。相當(dāng)容易理解,舉個簡單的例子:Word 軟件在編輯時按 Ctrl+Z 組合鍵時能撤銷當(dāng)前操作,使文檔恢復(fù)到之前的狀態(tài);

一、備忘錄模式的基本介紹

【1】備忘錄模式(Memento Pattern): 在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。
【2】現(xiàn)實生活中備忘錄是用來記錄某些要去做的事情,或者是記錄已經(jīng)達成共同意見的事情,以防忘記。而在軟件層面,備忘錄模式有著相同的含義,備忘錄對象主要用來記錄一個對象的某種狀態(tài),或者某些數(shù)據(jù),當(dāng)要做回退時,可以從備忘錄對象里獲取原來的數(shù)據(jù)進行恢復(fù)操作。
【3】備忘錄模式屬于行為型模式。
【4】實現(xiàn)了信息的封裝,使得用戶不需要關(guān)心狀態(tài)和保存細節(jié)。符合 “單一職責(zé)原則” 。
【5】為了節(jié)約內(nèi)存,備忘錄模式可以和原型模式配合使用。

二、備忘錄模式的結(jié)構(gòu)與類圖

忘錄模式的核心是設(shè)計備忘錄類以及用于管理備忘錄的管理者類,備忘錄模式的主要角色如下:
【1】發(fā)起人(Originator)角色: 記錄當(dāng)前對象的內(nèi)部狀態(tài)信息,提供創(chuàng)建備忘錄和恢復(fù)備忘錄數(shù)據(jù)的功能,實現(xiàn)其他業(yè)務(wù)功能,它可以訪問備忘錄里的所有信息。
【2】備忘錄(Memetor)角色: 負責(zé)存儲發(fā)起人對象的內(nèi)部狀態(tài),在需要的時候提供這些內(nèi)部狀態(tài)給發(fā)起人。
【3】管理者(Caretaker)角色: 對備忘錄進行管理,提供保存與獲取備忘錄的功能,但其不能對備忘錄的內(nèi)容進行訪問與修改。

三、備忘錄模式案例分析

我們使用備忘錄模式寫一個學(xué)校 100 米考試的案例:5 人一組,進行分組測試。我們需要備份的對象是,一組學(xué)生的成績。

【1】發(fā)起人(Originator)角色: 發(fā)起人需要依賴備忘錄類,對自己每次記錄的成績進行備份 createMemento 。同時需要提供一個還原方法 getOriginalFromMemento 將需要的備份類作為參數(shù)傳遞進來,并將結(jié)果賦值給目標類。

//100 米 測試  5人一組 ,這是個人所花費的時間,我們使用備忘錄的方式實現(xiàn)一下。
public class Original {//姓名private String name;//時間private int timestamp;public Memento createMemento() {return new Memento(name, timestamp);}//獲取目標對象  通過排名public void getOriginalFromMemento(Memento memento) {name = memento.getName();timestamp = memento.getTimestamp();}public int getTimestamp() {return timestamp;}public void setTimestamp(int timestamp) {this.timestamp = timestamp;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Original [name=" + name + ", timestamp=" + timestamp + "]";}
}

【2】備忘錄(Memetor)角色: 提供一些目標對象需要備份的屬性,通過構(gòu)造器進行屬性傳遞。

public class Memento {//姓名private String name;//時間private int timestamp;//構(gòu)造器public Memento(String name, int timestamp) {super();this.name = name;this.timestamp = timestamp;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getTimestamp() {return timestamp;}public void setTimestamp(int timestamp) {this.timestamp = timestamp;}
}

【3】管理者(Caretaker)角色: 創(chuàng)建一個存儲備忘錄對象的集合 <Map、List、Set> 等,同時創(chuàng)建添加、獲取、清空等方法。

public class Caretaker {//排名private int index = 1;//用于順序存儲 參加測試的 十名同學(xué)的成績Map<Integer, Memento>  mementos = new HashMap<Integer, Memento>();//提供一個 add 方法public void add(Memento m) {mementos.put(index, m);index += 1;}//獲取備份類public Memento get(int key) {return mementos.get(key);}//歸位public void remove() {mementos.clear();}
}

【4】客戶端(Client)角色: 首先將順序按的前五名同學(xué)的成績及姓名,通過集合 Map 按照名次存儲。五名同學(xué)測試完成后,通過目標類的 getOriginalFromMemento 方法,根據(jù)名次獲取同學(xué)的成績,并記錄在成績花名冊中。最后,清空記錄下一組。

public class Client {public static void main(String[] args) {//創(chuàng)建 目標類Original original = new Original();//管理類Caretaker managerMemento = new Caretaker();//記錄成績recordResults(original,managerMemento);//獲取第一名的成績System.out.println("恢復(fù)前目標類的記錄值"+original.toString());//從集合中獲取第一名的值Memento memento1 = managerMemento.get(1);//調(diào)用目標類的還原方法original.getOriginalFromMemento(memento1);System.out.println("恢復(fù)第一名的成績信息:"+original.toString());//從集合中獲取第三名的值Memento memento3 = managerMemento.get(3);//調(diào)用目標類的還原方法original.getOriginalFromMemento(memento3);System.out.println("恢復(fù)第三名的成績信息:"+original.toString());//清空記錄下一組managerMemento.remove();}private static void recordResults(Original original,Caretaker managerMemento) {//第一名學(xué)生成績original.setName("張三");original.setTimestamp(2330);//創(chuàng)建一個備份類Memento memento1 = original.createMemento();//備份類存入 管理類中managerMemento.add(memento1);//第二名學(xué)生成績original.setName("李四");original.setTimestamp(2550);//創(chuàng)建一個備份類Memento memento2 = original.createMemento();//備份類存入 管理類中managerMemento.add(memento2);//第三名學(xué)生成績original.setName("王五");original.setTimestamp(2560);//創(chuàng)建一個備份類Memento memento3 = original.createMemento();//備份類存入 管理類中managerMemento.add(memento3);}
}

【5】結(jié)果展示: 備份者模式思想相對簡單,主要查看細節(jié)上的實現(xiàn)。備份類相對簡單,就一個普通類。但是目標類,提供了存儲原始對象和獲取原始對象的方法,是備份者模式的精華所在。

恢復(fù)目標類的記錄值Original [name=王五, timestamp=2560]
恢復(fù)第一名的成績信息:Original [name=張三, timestamp=2330]
恢復(fù)第三名的成績信息:Original [name=王五, timestamp=2560]
http://www.risenshineclean.com/news/47581.html

相關(guān)文章:

  • 濟南網(wǎng)站建設(shè)公司有哪些廣州seo優(yōu)化費用
  • 裝修網(wǎng)平臺品牌seo培訓(xùn)
  • 上海網(wǎng)站建設(shè)方案2021年年度關(guān)鍵詞
  • 陜西中洋建設(shè)有限公司網(wǎng)站自己怎么做關(guān)鍵詞優(yōu)化
  • 三站合一的網(wǎng)站怎么做教程找培訓(xùn)機構(gòu)的app
  • 手機社區(qū)網(wǎng)站模板求網(wǎng)址
  • 網(wǎng)站域名自己做百度經(jīng)驗官網(wǎng)
  • 做設(shè)計什么設(shè)計比較好的網(wǎng)站開魯網(wǎng)站seo
  • 怎樣用織夢做音樂網(wǎng)站百度導(dǎo)航如何設(shè)置公司地址
  • 蘇州網(wǎng)站開發(fā)公司招聘網(wǎng)頁制作作業(yè)100例
  • 轉(zhuǎn)轉(zhuǎn)怎么做釣魚網(wǎng)站素材網(wǎng)
  • 梁山城鄉(xiāng)建設(shè)局網(wǎng)站網(wǎng)絡(luò)輿情分析
  • 產(chǎn)品展示網(wǎng)站模板東莞市網(wǎng)站seo內(nèi)容優(yōu)化
  • wordpress主題插件seo工程師
  • wordpress加一個字段seo外鏈推廣
  • 杭州的網(wǎng)站建設(shè)靜態(tài)網(wǎng)站開發(fā)
  • 廣州商城建網(wǎng)站渠道搜索排名優(yōu)化軟件
  • ecshop網(wǎng)站模板手機優(yōu)化大師
  • 做100個網(wǎng)站關(guān)鍵詞優(yōu)化軟件有哪些
  • 魔方網(wǎng)站建設(shè)網(wǎng)站制作網(wǎng)站關(guān)鍵詞優(yōu)化報價
  • 現(xiàn)在建網(wǎng)站seo關(guān)鍵詞優(yōu)化排名外包
  • 商城網(wǎng)站建設(shè)經(jīng)驗seo工具軟件
  • 網(wǎng)站建設(shè)第一步怎么弄win7優(yōu)化大師官網(wǎng)
  • 深圳網(wǎng)站建設(shè)制作公司排名國際新聞頭條
  • 衢州市住房建設(shè)局 網(wǎng)站網(wǎng)站制作哪家公司好
  • 廊坊網(wǎng)站制作套餐廈門人才網(wǎng)唯一官網(wǎng)招聘
  • 淘寶網(wǎng)站那個做的百度明星人氣榜
  • ppt做書模板下載網(wǎng)站有哪些百度關(guān)鍵詞分析工具
  • 轉(zhuǎn)運公司網(wǎng)站建設(shè)服務(wù)推廣軟文
  • 微信微博網(wǎng)站建設(shè)英文外鏈代發(fā)