99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)模式:備忘錄設(shè)計(jì)模式

冬至子 ? 來(lái)源:墨風(fēng)如雪小站 ? 作者:墨風(fēng)如雪 ? 2023-06-06 11:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

模式描述

備忘錄設(shè)計(jì)模式(Memento Design Pattern)是一種行為型設(shè)計(jì)模式,它的主要目的是在不破壞對(duì)象封裝性的前提下,捕捉和保存一個(gè)對(duì)象的內(nèi)部狀態(tài),以便稍后可以將對(duì)象恢復(fù)到該狀態(tài)。這種模式通常用于實(shí)現(xiàn)撤銷(xiāo)和重做操作。

主要角色

1、備忘錄(Memorandum) :保存了發(fā)起人的狀態(tài),從而能夠在適當(dāng)?shù)臅r(shí)候恢復(fù)狀態(tài)。2. 發(fā)起人(Originator) :創(chuàng)建一個(gè)備忘錄,以表示其當(dāng)前狀態(tài),并可以從備忘錄中恢復(fù)狀態(tài)。

引用場(chǎng)景

1.后退/前進(jìn):瀏覽器的后退/前進(jìn)就是緩存頁(yè)面狀態(tài)的典型例子。2.撤銷(xiāo)/重做:通常基于備忘錄模式實(shí)現(xiàn)撤銷(xiāo)和重做操作。3.快照:保存某個(gè)時(shí)間點(diǎn)對(duì)象的狀態(tài)快照。

設(shè)計(jì)要點(diǎn)

1.僅僅存儲(chǔ)狀態(tài):備忘錄僅存儲(chǔ)對(duì)象的內(nèi)部狀態(tài),而不是存儲(chǔ)對(duì)象的引用。2.完全封裝:外部不會(huì)訪(fǎng)問(wèn)到備忘錄類(lèi)。3.避免權(quán)限問(wèn)題:發(fā)起人應(yīng)該具有創(chuàng)建和訪(fǎng)問(wèn)備忘錄的權(quán)限。

優(yōu)缺點(diǎn)

?輕松實(shí)現(xiàn)對(duì)象狀態(tài)的快照和恢復(fù)?分離了對(duì)象與狀態(tài)的保存與恢復(fù)過(guò)程?需要額外的空間來(lái)存儲(chǔ)狀態(tài)

與備忘錄模式類(lèi)似的模式

?原型模式:對(duì)一個(gè)對(duì)象進(jìn)行克隆,產(chǎn)生一個(gè)與原對(duì)象類(lèi)似的新對(duì)象。

Java代碼示例

首先,我們創(chuàng)建一個(gè)發(fā)起人(Originator)類(lèi),它具有保存和恢復(fù)狀態(tài)的能力:

publicclassOriginator{
privateString state;


publicvoid setState(String state){
this.state = state;
}


publicString getState(){
return state;
}


publicMemento saveStateToMemento(){
returnnewMemento(state);
}


publicvoid getStateFromMemento(Memento memento){
        state = memento.getState();
}
}

接下來(lái),我們創(chuàng)建備忘錄(Memento)類(lèi),用于保存發(fā)起人的狀態(tài):

publicclassMemento{
privateString state;


publicMemento(String state){
this.state = state;
}


publicString getState(){
return state;
}
}

現(xiàn)在,我們創(chuàng)建一個(gè)負(fù)責(zé)人(Caretaker)類(lèi),用于管理備忘錄:

import java.util.ArrayList;
import java.util.List;


publicclassCaretaker{
privateList< Memento > mementoList =newArrayList<  >();


publicvoid add(Memento state){
        mementoList.add(state);
}


publicMementoget(int index){
return mementoList.get(index);
}
}

最后,我們?cè)谥黝?lèi)中使用這些類(lèi):

publicclassMementoPatternDemo{
publicstaticvoid main(String[] args){
Originator originator =newOriginator();
Caretaker caretaker =newCaretaker();


        originator.setState("State #1");
        originator.setState("State #2");
        caretaker.add(originator.saveStateToMemento());


        originator.setState("State #3");
        caretaker.add(originator.saveStateToMemento());


        originator.setState("State #4");
System.out.println("Current State: "+ originator.getState());


        originator.getStateFromMemento(caretaker.get(0));
System.out.println("First saved State: "+ originator.getState());
        originator.getStateFromMemento(caretaker.get(1));
System.out.println("Second saved State: "+ originator.getState());
}
}

擴(kuò)展知識(shí)點(diǎn)

備忘錄模式與命令模式(Command Pattern)可以結(jié)合使用,以實(shí)現(xiàn)更加強(qiáng)大的撤銷(xiāo)/重做功能。命令模式可以用來(lái)記錄操作的順序和執(zhí)行操作,而備忘錄模式用來(lái)記錄操作前后的狀態(tài)。這樣一來(lái),我們可以輕松地在操作序列中向前或向后移動(dòng),同時(shí)還可以保留每個(gè)操作的上下文信息。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2989

    瀏覽量

    109561
  • JAVA語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    20692
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    HarmonyOS開(kāi)發(fā)實(shí)例:【手機(jī)備忘錄

    基于用戶(hù)首選項(xiàng),實(shí)現(xiàn)了備忘錄新增、更新、刪除以及查找等功能。
    的頭像 發(fā)表于 04-18 21:40 ?1323次閱讀
    HarmonyOS開(kāi)發(fā)實(shí)例:【手機(jī)<b class='flag-5'>備忘錄</b>】

    PostgreSQL操作備忘錄

    PostgreSQL 操作備忘錄
    發(fā)表于 05-23 08:48

    UDS診斷命令備忘錄

    UDS實(shí)踐性強(qiáng),邏輯復(fù)雜,很多服務(wù)非要體驗(yàn)過(guò)一次才能理解,導(dǎo)致包括我在內(nèi)的初學(xué)者感覺(jué)晦澀難懂,不明覺(jué)厲,因此將自己的理解寫(xiě)下來(lái)、整理下來(lái),與君共勉。零、UDS診斷命令備忘錄一、簡(jiǎn)介UDS
    發(fā)表于 08-26 16:09

    怎樣去搭建一種基于XR806的開(kāi)源桌面備忘錄

    本人計(jì)劃懟一個(gè)開(kāi)源桌面備忘錄/天氣預(yù)報(bào)/相冊(cè)的項(xiàng)目基于XR806,同時(shí)學(xué)習(xí)鴻蒙操作系統(tǒng)獲得暈哥贈(zèng)送的開(kāi)發(fā)板和芯片,目前處于環(huán)境搭建階段看起來(lái)這個(gè)芯片玩的人比較少,目前遇到了問(wèn)題,不知道如何解決,希望
    發(fā)表于 12-28 06:52

    全球半導(dǎo)體聯(lián)盟與中國(guó)半導(dǎo)體行業(yè)簽署合作備忘錄

    全球半導(dǎo)體聯(lián)盟與中國(guó)半導(dǎo)體行業(yè)簽署合作備忘錄 全球半導(dǎo)體聯(lián)盟(GSA)與中國(guó)半導(dǎo)體行業(yè)協(xié)會(huì)(CSIA)在蘇州聯(lián)合申明簽署合作備忘錄。此次合作將為促
    發(fā)表于 09-24 08:17 ?760次閱讀

    是德科技與中國(guó)移動(dòng)簽署諒解備忘錄

    是德科技(NYSE:KEYS)今日宣布與中國(guó)移動(dòng)通信集團(tuán)有限公司(CMCC)簽署諒解備忘錄(MoU)將全力支持 5G 終端先行者計(jì)劃的實(shí)施。
    的頭像 發(fā)表于 07-19 11:01 ?4999次閱讀

    戴姆勒與百度簽署諒解備忘錄

    7月25日,奔馳母公司戴姆勒與百度簽署諒解備忘錄,深化雙方在自動(dòng)駕駛和車(chē)聯(lián)網(wǎng)等領(lǐng)域的戰(zhàn)略合作。
    的頭像 發(fā)表于 07-28 09:53 ?2914次閱讀

    嵌入式軟件設(shè)計(jì)模式 好文值得收藏

    ) ? 03)C語(yǔ)言和設(shè)計(jì)模式(狀態(tài)模式) ? 04)C語(yǔ)言和設(shè)計(jì)模式(命令模式) ? 05)C語(yǔ)言和設(shè)計(jì)模式(解釋器
    的頭像 發(fā)表于 06-20 09:09 ?2245次閱讀

    Vedanta與30家日本公司簽署諒解備忘錄

    印度Vedanta Group已與30家日本公司簽署諒解備忘錄,以開(kāi)發(fā)印度半導(dǎo)體和玻璃顯示器制造生態(tài)系統(tǒng)。上周在日本東京舉行的2022年Vedanta-Avanstrate商業(yè)合作伙伴峰會(huì)上簽署了這些備忘錄,來(lái)自100多家全球公司的200多名代表出席了峰會(huì)。
    的頭像 發(fā)表于 12-15 09:12 ?1159次閱讀

    設(shè)計(jì)模式行為型:備忘錄模式

    備忘錄模式(Memento Pattern)保存一個(gè)對(duì)象的某個(gè)狀態(tài),以便在適當(dāng)?shù)臅r(shí)候恢復(fù)對(duì)象。備忘錄模式屬于行為型模式。
    的頭像 發(fā)表于 06-07 11:16 ?1034次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b>行為型:<b class='flag-5'>備忘錄</b><b class='flag-5'>模式</b>

    新思科技同越南政府簽署諒解備忘錄

    在越南總理范明政訪(fǎng)美期間,新思科技與越南國(guó)家創(chuàng)新中心(nic)簽署了關(guān)于培養(yǎng)越南集成電路設(shè)計(jì)人才的諒解備忘錄,支持nic成立芯片設(shè)計(jì)孵化中心。另外,新思科技與越南信息通訊部下屬的信息通信技術(shù)產(chǎn)業(yè)公司簽訂了支援越南半導(dǎo)體產(chǎn)業(yè)發(fā)展的諒解備忘錄。
    的頭像 發(fā)表于 09-20 10:56 ?1801次閱讀

    實(shí)踐GoF的23種設(shè)計(jì)模式備忘錄模式

    相對(duì)于代理模式、工廠(chǎng)模式等設(shè)計(jì)模式,備忘錄模式(Memento)在我們?nèi)粘i_(kāi)發(fā)中出鏡率并不高,除了應(yīng)用場(chǎng)景的限制之外,另一個(gè)原因,可能是
    的頭像 發(fā)表于 11-25 09:05 ?831次閱讀
    實(shí)踐GoF的23種設(shè)計(jì)<b class='flag-5'>模式</b>:<b class='flag-5'>備忘錄</b><b class='flag-5'>模式</b>

    蘋(píng)果iOS 18將支持語(yǔ)音備忘錄及數(shù)學(xué)符號(hào)顯示

    首先是語(yǔ)音備忘錄功能。據(jù)悉,蘋(píng)果有意在iOS 18系統(tǒng)中加入此項(xiàng)功能,使iPhone用戶(hù)能夠便捷地錄制音頻文件,并將其直接嵌入至備忘錄之中。
    的頭像 發(fā)表于 04-18 11:14 ?850次閱讀

    黑芝麻智能與Dirac簽署合作備忘錄

    1月21日,黑芝麻智能與Dirac簽署合作備忘錄,雙方將基于黑芝麻智能武當(dāng)C1200家族芯片共同探索汽車(chē)高品質(zhì)音頻體驗(yàn)的創(chuàng)新。
    的頭像 發(fā)表于 01-21 10:48 ?612次閱讀

    華為與巴塞羅那市政府簽署諒解備忘錄

    MWC25巴塞羅那期間,華為與巴塞羅那市政府簽署智慧城市戰(zhàn)略合作諒解備忘錄(以下簡(jiǎn)稱(chēng)“本協(xié)議”)。
    的頭像 發(fā)表于 03-07 15:53 ?461次閱讀