国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

備忘錄模式(Memento)

Bamboy / 1175人閱讀

摘要:備忘錄模式一備忘錄模式定義在不破壞封閉性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。

備忘錄模式

一. 備忘錄模式 1.1 定義

在不破壞封閉性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài).

1.2 角色

備忘錄(Memento):用于存儲發(fā)起者對象的內(nèi)部狀態(tài).

發(fā)起者(Orginator):創(chuàng)建備忘錄,記錄或恢復(fù)自身狀態(tài).

管理者(CareTaker):負(fù)責(zé)管理備忘錄.

二. 具體實(shí)現(xiàn) 2.1 創(chuàng)建備忘錄類
    public class Memento {
        private String state;
        public Memento(String state){
            this.state = state;
        }
        public String getState() {
            return state;
        }
    }
2.2 創(chuàng)建發(fā)起者類
    public class Originator {
        private String state;
        public void setState(String state) {
            System.out.println("state changed : " + state);
            this.state = state;
        }
        public Memento save(){
            return new Memento(state);
        }
    }
2.3 創(chuàng)建管理者類
    public class CareTaker {
        private Memento memento;
        public void save(Memento memento){
            System.out.println("Memento save ..." + memento.getState());
            this.memento = memento;
        }
        public Memento read(){
            System.out.println("Memento read ..." + memento.getState());
            return memento;
        }
    }
2.4 調(diào)用
    public static void main(String[] args) {
        Originator originator = new Originator();
        CareTaker careTaker = new CareTaker();
        originator.setState("1");
        careTaker.save(originator.save());
        originator.setState("2");
        careTaker.read();
    }
2.5 輸出
    state changed : 1
    Memento save ...1
    state changed : 2
    Memento read ...1
三. 優(yōu)缺點(diǎn) 3.1 優(yōu)點(diǎn)

可以恢復(fù)到之前的狀態(tài).

3.2 缺點(diǎn)

耗費(fèi)資源.

四. 源碼
    https://github.com/Seasons20/DisignPattern.git

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69667.html

相關(guān)文章

  • 一起學(xué)設(shè)計模式 - 忘錄模式

    摘要:備忘錄模式常常與命令模式和迭代子模式一同使用。自述歷史所謂自述歷史模式實(shí)際上就是備忘錄模式的一個變種。在備忘錄模式中,發(fā)起人角色負(fù)責(zé)人角色和備忘錄角色都是獨(dú)立的角色。 備忘錄模式(Memento Pattern)屬于行為型模式的一種,在不破壞封裝特性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣就可以將該對象恢復(fù)到原先保存的狀態(tài)。 概述 備忘錄模式又叫做快照模式(...

    roland_reed 評論0 收藏0
  • 行為型模式

    摘要:但是發(fā)出者并不清楚到底最終那個對象會處理該請求,所以,責(zé)任鏈模式可以實(shí)現(xiàn),在隱瞞客戶端的情況下,對系統(tǒng)進(jìn)行動態(tài)的調(diào)整。因?yàn)樵L問者模式使得算法操作增加變得容易。訪問者模式將有關(guān)行為集中到一個訪問者對象中,其改變不影響系統(tǒng)數(shù)據(jù)結(jié)構(gòu)。 總體分為3大類:創(chuàng)建型模式 (5種):工廠方法、抽象工廠、單例、建造者、原型結(jié)構(gòu)型模式(7種):適配器、裝飾器、代理、外觀、橋接、組合、享元行為型模式(11種...

    why_rookie 評論0 收藏0
  • PHP基礎(chǔ)

    摘要:分別為適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。設(shè)計模式五適配器模式適配器模式將某個對象的接生成器和協(xié)程的實(shí)現(xiàn)在這篇文章中,作者針對那些比較難以理解的概念,以一個更為通俗的方式去講明白。。 PHP 源碼注解 PHP 的詳細(xì)源碼注解 PHP 字符串操作整理 一些有關(guān)字符串的常用操作。 Redis 常見七種使用場景 (PHP 實(shí)戰(zhàn)) 這篇文章主要介紹利用 R...

    HtmlCssJs 評論0 收藏0
  • 好久不見,Java設(shè)計模式

    摘要:享元模式享元模式盡可能的讓用戶復(fù)用已經(jīng)有的對象,從而避免造成反復(fù)創(chuàng)建對象的資源浪費(fèi)。享元模式要求大部分的對象可以外部化。 showImg(https://segmentfault.com/img/bVbuYD9?w=1920&h=1200); 引子 設(shè)計模式是很多程序員總結(jié)出來的最佳實(shí)踐。曾經(jīng)在剛開始寫項目的時候?qū)W習(xí)過設(shè)計模式,在開發(fā)過程中,也主動或者被動的使用過。現(xiàn)在寫代碼雖說不會特...

    alexnevsky 評論0 收藏0
  • Java學(xué)習(xí) - 設(shè)計模式

    摘要:舉例遇到多個構(gòu)造器參數(shù)時考慮使用構(gòu)建器,而不是重疊構(gòu)造器模式或模式調(diào)用方法。靜態(tài)工廠和構(gòu)造器有個共同的局限性它們不能很好地擴(kuò)展大量的可選參數(shù)構(gòu)建器模式年月日客戶端調(diào)用缺點(diǎn)構(gòu)建器模式可能比重疊構(gòu)造器更加冗長,參數(shù)多時使用較好。 設(shè)計模式 此文章部分來于網(wǎng)絡(luò),為了學(xué)習(xí)總結(jié)。 一、原型模式(Prototype) 介紹:從一個對象再創(chuàng)建另一個對象,而不需知道任何細(xì)節(jié)。 1、兩種表現(xiàn)形式 (1)...

    MorePainMoreGain 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<