<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【Java】23種設(shè)計(jì)模式——19.備忘錄模式

      定義

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

      核心角色

      1. Originator(原發(fā)器):需要保存狀態(tài)的對(duì)象。
      2. Memento(備忘錄):存儲(chǔ)原發(fā)器內(nèi)部狀態(tài)的對(duì)象。
      3. Caretaker(管理者):負(fù)責(zé)保存和恢復(fù)備忘錄對(duì)象。

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

      • 需要保存對(duì)象狀態(tài)快照以便回滾
      • 需要實(shí)現(xiàn)撤銷/重做功能
      • 需要保存對(duì)象歷史狀態(tài)
      • 需要實(shí)現(xiàn)事務(wù)回滾機(jī)制

      使用

      • 原發(fā)器

        /**
         * 備忘錄模式:原發(fā)器
         * @Author:lyj
         * @Date:2025/5/21 09:54
         */
        public class Originator {
            private String state;
        
            /**
             * 設(shè)置狀態(tài)
             * @param state
             */
            public void setMemento(String state)
            {
                this.state = state;
                System.out.println("原發(fā)器狀態(tài):" + state);
            }
        
            /**
             * 創(chuàng)建備忘錄
             * @return
             */
            public Memento saveMemento() {
                return new Memento(state);
            }
        
            /**
             * 恢復(fù)備忘錄
             * @param memento
             */
            public void restoreMemento(Memento memento) {
                this.state = memento.getState();
                System.out.println("原發(fā)器狀態(tài):" + state);
            }
        }
        
      • 備忘錄

        /**
         * 備忘錄模式:備忘錄
         * @Author:lyj
         * @Date:2025/5/21 09:52
         */
        public class Memento {
            private String state;       // 狀態(tài)
        
            public Memento(String state) {
                this.state = state;
            }
        
            public String getState() {
                return state;
            }
        
            public void setState(String state) {
                this.state = state;
            }
        }
        
      • 管理者

        /**
         * 備忘錄模式-管理者: 負(fù)責(zé)保存?zhèn)渫泴?duì)象
         * @Author:lyj
         * @Date:2025/5/21 10:36
         */
        public class Caretaker {
            private List<Memento> mementoList = new ArrayList<>();
        
            /**
             * 添加備忘錄對(duì)象
             * @param memento 備忘錄對(duì)象
             */
            public void add(Memento memento) {
                mementoList.add(memento);
            }
            /**
             * 獲取指定索引的備忘錄對(duì)象
             * @param index 索引
             * @return 備忘錄對(duì)象
             */
            public Memento get(int index) {
                return mementoList.get(index);
            }
        }
        

      運(yùn)行測(cè)試數(shù)據(jù):

      Originator originator = new Originator();
      Caretaker caretaker = new Caretaker();
      // 設(shè)置并保存賬套
      originator.setMemento("狀態(tài)1");
      caretaker.add(originator.saveMemento());
      originator.setMemento("狀態(tài)2");
      caretaker.add(originator.saveMemento());
      // 恢復(fù)到指定狀態(tài)
      originator.restoreMemento(caretaker.get(0));
      

      運(yùn)行結(jié)果:
      image

      posted @ 2025-06-20 16:55  陸陸無為而治者  閱讀(27)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产精品中文一区二区| 免费吃奶摸下激烈视频| 久久综合色之久久综合色| 一区二区三区精品自拍视频| 天堂а√在线中文在线| 国产精品久久久久aaaa| 最新精品国产自偷在自线| 黑人巨大精品oideo| 亚洲另类激情专区小说图片| jk白丝喷浆| 亚洲性色AV一区二区三区| 嗯灬啊灬把腿张开灬动态图| 97国产成人无码精品久久久| 成 人 免费 在线电影| 不卡乱辈伦在线看中文字幕| 亚洲精品久久久久国色天香| 天天综合亚洲色在线精品| 成人av午夜在线观看| 国产欧美精品一区二区三区-老狼| 国产曰批视频免费观看完| 动漫AV纯肉无码AV电影网| 亚洲av久久精品狠狠爱av| 97av麻豆蜜桃一区二区| 色噜噜亚洲男人的天堂| 国产成人精品久久性色av| 国产精品毛片大码女人| 无码人妻一区二区三区精品视频| 亚洲激情一区二区三区在线| 国产系列丝袜熟女精品视频| 久久国产乱子精品免费女| 中文字幕人妻中出制服诱惑 | 国产精品亚洲二区在线播放| 久久国内精品自在自线观看| 欧美成人精品一级在线观看| 男人一天堂精品国产乱码| 草草浮力影院| 文山县| 亚洲一区二区三区人妻天堂 | 中文字幕在线精品国产| 国产精品一区二区三区四区| 国产免费视频一区二区|