国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式——備忘錄模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

備忘錄模式(Memento Pattern)是一種行為型設(shè)計(jì)模式,它在不破壞封裝的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣可以在需要時(shí)將對(duì)象恢復(fù)到先前的狀態(tài)。

原理

  • 發(fā)起人(Originator): 是擁有復(fù)雜內(nèi)部狀態(tài)的對(duì)象,它可以創(chuàng)建和恢復(fù)備忘錄。
  • 備忘錄(Memento): 存儲(chǔ)發(fā)起人的內(nèi)部狀態(tài),通常是一個(gè)值對(duì)象或數(shù)據(jù)容器,對(duì)外提供有限的接口以防止直接訪問其內(nèi)部細(xì)節(jié)。
  • 管理器/caretaker(Caretaker): 負(fù)責(zé)存儲(chǔ)和傳遞備忘錄對(duì)象,但不能對(duì)備忘錄的內(nèi)容進(jìn)行操作或解讀,只負(fù)責(zé)保管和還原發(fā)起人的狀態(tài)。

Java代碼示例

// 備忘錄類
public class Memento {
    private final String state;

    public Memento(String state) {
        this.state = state;
    }

    // 只讀方法,允許發(fā)起者獲取備忘錄中的狀態(tài)
    public String getState() {
        return state;
    }
}

// 發(fā)起人(如游戲角色)
public class Originator {
    private String state;

    // 設(shè)置或獲取當(dāng)前狀態(tài)
    public void setState(String state) {
        System.out.println("State changed to: " + state);
        this.state = state;
    }

    public String getState() {
        return state;
    }

    // 創(chuàng)建備忘錄并保存當(dāng)前狀態(tài)
    public Memento saveToMemento() {
        return new Memento(state);
    }

    // 從備忘錄恢復(fù)狀態(tài)
    public void restoreFromMemento(Memento memento) {
        this.state = memento.getState();
        System.out.println("State restored to: " + state);
    }
}

// 管理器/caretaker
public class Caretaker {
    private Memento memento;

    public void setMemento(Memento memento) {
        this.memento = memento;
    }

    public Memento getMemento() {
        return memento;
    }
}

// 使用示例
public class Client {
    public static void main(String[] args) {
        Originator originator = new Originator();
        originator.setState("State A");

        // 保存當(dāng)前狀態(tài)到備忘錄
        Caretaker caretaker = new Caretaker();
        caretaker.setMemento(originator.saveToMemento());

        // 改變狀態(tài)
        originator.setState("State B");

        // 恢復(fù)之前保存的狀態(tài)
        originator.restoreFromMemento(caretaker.getMemento());
    }
}

設(shè)想你正在玩一款電子游戲,每當(dāng)你存檔的時(shí)候,游戲就會(huì)把你的角色狀態(tài)(等級(jí)、裝備、位置等)打包成一個(gè)“備忘錄”,然后存入存檔文件中。當(dāng)你想要讀取存檔時(shí),游戲會(huì)從存檔文件中取出“備忘錄”,并將角色狀態(tài)恢復(fù)到存檔時(shí)的樣子。在這個(gè)過程中,游戲程序(發(fā)起人)通過備忘錄模式保護(hù)了內(nèi)部狀態(tài)信息,而存檔系統(tǒng)(管理器)僅負(fù)責(zé)保存和加載這些備忘錄。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803708.html

應(yīng)用場(chǎng)景

  • 文本編輯器:用戶可以隨時(shí)保存文檔狀態(tài)(備忘錄),并在需要時(shí)撤銷到之前的狀態(tài)。
  • 游戲:保存和恢復(fù)玩家的游戲進(jìn)度或角色屬性狀態(tài)。
  • 數(shù)據(jù)庫(kù)事務(wù):事務(wù)管理器使用備忘錄保存事務(wù)開始時(shí)的數(shù)據(jù)狀態(tài),在事務(wù)失敗時(shí)能夠回滾到初始狀態(tài)。

適用性

  • 需要保存和恢復(fù)對(duì)象的內(nèi)部狀態(tài)到過去某個(gè)時(shí)刻的情況。
  • 對(duì)象的狀態(tài)信息應(yīng)該作為值對(duì)象來(lái)存儲(chǔ),而不是通過復(fù)制對(duì)象的所有變量。
  • 當(dāng)直接訪問對(duì)象內(nèi)部狀態(tài)違反封裝原則或者可能導(dǎo)致對(duì)象狀態(tài)不一致時(shí)。

到了這里,關(guān)于設(shè)計(jì)模式——備忘錄模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——備忘錄模式Memento(原理講解+應(yīng)用場(chǎng)景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——備忘錄模式Memento(原理講解+應(yīng)用場(chǎng)景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    游戲角色有攻擊力和防御力,在大戰(zhàn)Boss前保存自身的狀態(tài)(攻擊力和防御力),當(dāng)大戰(zhàn)Boss后攻擊力和防御力下降,可以從備忘錄對(duì)象恢復(fù)到大戰(zhàn)前的狀態(tài) 針對(duì)每一種角色,設(shè)計(jì)一個(gè)類來(lái)存儲(chǔ)該角色的狀態(tài) 【分析】 一個(gè)對(duì)象,就對(duì)應(yīng)一個(gè)保存對(duì)象狀態(tài)的對(duì)象, 這樣當(dāng)我們游戲

    2024年02月13日
    瀏覽(57)
  • 設(shè)計(jì)模式——備忘錄模式

    備忘錄模式(Memento Pattern)是一種行為型設(shè)計(jì)模式,它在不破壞封裝的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣可以在需要時(shí)將對(duì)象恢復(fù)到先前的狀態(tài)。 發(fā)起人(Originator): 是擁有復(fù)雜內(nèi)部狀態(tài)的對(duì)象,它可以創(chuàng)建和恢復(fù)備忘錄。 備忘錄(M

    2024年01月19日
    瀏覽(26)
  • 《設(shè)計(jì)模式》備忘錄模式

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

    定義 : 備忘錄模式又稱為快照模式或者令牌模式, 在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài),這樣可以在以后將對(duì)象恢復(fù)到原先保存的狀態(tài)。 屬性 行為型 模式。 備忘錄模式的角色組成 : Originator(發(fā)起人) :負(fù)責(zé)創(chuàng)建一個(gè) Memento

    2024年02月06日
    瀏覽(32)
  • 【設(shè)計(jì)模式】備忘錄模式

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

    主頁(yè)傳送門: ?? 傳送 ???????備忘錄(Memento Pattern)模式又叫做快照模式(Snapshot Pattern)或Token模式,是對(duì)象的行為模式。。其定義如下: Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later. ???????即:在不破壞封

    2024年02月07日
    瀏覽(25)
  • 設(shè)計(jì)模式-備忘錄模式

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

    備忘錄模式(Memento Pattern)是計(jì)算機(jī)科學(xué)中的一種行為設(shè)計(jì)模式。它提供了一種在不破壞封裝性的前提下,捕獲和恢復(fù)對(duì)象內(nèi)部狀態(tài)的方法。這種模式主要用于在用戶需要回滾到對(duì)象的某個(gè)先前狀態(tài)時(shí),能夠?qū)崿F(xiàn)狀態(tài)的還原。 在備忘錄模式中,主要涉及到三個(gè)角色: Origina

    2024年01月23日
    瀏覽(23)
  • 【備忘錄設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【備忘錄設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    備忘錄模式(Memento Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式。這種模式就是在不破壞封裝的條件下,將一個(gè)對(duì)象的狀態(tài)捕捉(Capture)住,并放在外部存儲(chǔ)起來(lái),從而可以在將來(lái)合適的時(shí)候把這個(gè)對(duì)象還原到存儲(chǔ)起來(lái)的狀態(tài)。備忘錄模式常常與命令模式和迭代子模式一同使用。 備忘錄模式

    2023年04月20日
    瀏覽(27)
  • 【前端設(shè)計(jì)模式】之備忘錄模式

    【前端設(shè)計(jì)模式】之備忘錄模式

    設(shè)計(jì)模式是在軟件開發(fā)中經(jīng)過驗(yàn)證的解決問題的方法。它們是從經(jīng)驗(yàn)中總結(jié)出來(lái)的,可以幫助我們更好地組織和管理代碼,提高代碼的可維護(hù)性、可擴(kuò)展性和可重用性。無(wú)論是前端還是后端開發(fā),設(shè)計(jì)模式都扮演著重要的角色。在本專欄中,我們將探索一些常見的前端設(shè)計(jì)模

    2024年02月05日
    瀏覽(30)
  • 設(shè)計(jì)模式行為型——備忘錄模式

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

    目錄 備忘錄模式的定義 備忘錄模式的實(shí)現(xiàn) 備忘錄模式角色 備忘錄模式類圖 備忘錄模式舉例 備忘錄模式代碼實(shí)現(xiàn) 備忘錄模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 使用場(chǎng)景 注意事項(xiàng) 實(shí)際應(yīng)用 ????????備忘錄模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式(Token Pattern),屬

    2024年02月14日
    瀏覽(23)
  • 設(shè)計(jì)模式(十八)備忘錄

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

    在不破壞封裝的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài),這樣就可以在以后將對(duì)象恢復(fù)到原先保存的狀態(tài)。備忘錄模式是一種對(duì)象行為型模式,其別名為標(biāo)記(Token)模式。 備忘錄模式的核心在于備忘錄類以及用于管理備忘錄的負(fù)責(zé)人類的設(shè)計(jì),包

    2024年02月04日
    瀏覽(24)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 備忘錄模式

    ? ? ? ? 備忘錄模式在不破壞封裝的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài),這樣可以在以后將對(duì)象恢復(fù)到原先保存的狀態(tài)。它是一種對(duì)象行為模式,別名為Token。 myclass.h myclass.cpp main.cpp ? ? ? ? 1.?它提供了一種狀態(tài)恢復(fù)的實(shí)現(xiàn)機(jī)制,使得用戶可

    2024年01月24日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包