• 设计模式之备忘录模式


    一、概念

    • 官方:备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
      个人理解:备忘录模式就是记录对象的状态,记录对象的属性。

    二、场景

    • Git项目管理工具
    • 数据库事务源码
    • 浏览器[前进,后退]

    三、实现

    • 条件
      • java
    • 场景
      • 以简单的项目管理为场景实现备忘录模式。
    • 代码实现
      • 解决方案类,类名:Solution
            package com.MemorandumPattern; 
            public class Solution {
                //类数量
                public int ClassCount;
                //代码大小
                public int CodeSize;
                //项目数量
                public int ProductCount;
                //保存当前对象状态
                public Memorandum SaveStateToMemorandum()
                {
                    return new Memorandum(ClassCount,CodeSize,ProductCount);
                }
                //恢复状态
                public  void  RecoveryStateToMemorandum(Memorandum memorandum)
                {
                    ClassCount = memorandum.ClassCount;
                    CodeSize = memorandum.CodeSize;
                    ProductCount = memorandum.ProductCount;
                }
            } 
        
      • 备忘录类,类名:Memorandum
            package com.MemorandumPattern; 
            public class Memorandum {
                //构造函数
                public Memorandum(int classCount,int codeSize,int productCount)
                {
                    ClassCount = classCount;
                    CodeSize = codeSize;
                    ProductCount = productCount;
                }
                //类数量
                public int ClassCount;
                //代码大小
                public int CodeSize;
                //项目数量
                public int ProductCount;
            } 
        
      • Git管理类,类名:Git
            package com.MemorandumPattern;
            
            import java.util.ArrayList;
            import java.util.List; 
            public class Git {
                private List list = new ArrayList<>();
                public void Add(Memorandum memorandum)
                {
                    list.add(memorandum);
                }
                public Memorandum GetMemorandum(int  index)
                {
                    return list.get(index);
                }
            }
        
        
      • 入口函数类
            Git git = new Git(); 
            Solution solution = new Solution();
            solution.ClassCount =100;
            solution.CodeSize=120;
            solution.ProductCount =1 ;
            //记录当前对象的状态数据
            git.Add(solution.SaveStateToMemorandum()) ;
            Memorandum memorandum =git.GetMemorandum(0);
        
            solution.ClassCount =1000;
            solution.CodeSize=1200;
            solution.ProductCount =10 ;
            Memorandum memorandum1 =  solution.SaveStateToMemorandum();
             System.out.println("-------旧对象数据:"+memorandum.ClassCount+"---"+memorandum.CodeSize+"-----"+memorandum.ProductCount);
             System.out.println("-------新对象数据:"+memorandum1.ClassCount+"---"+memorandum1.CodeSize+"-----"+memorandum1.ProductCount);
             //恢复状态
             solution.RecoveryStateToMemorandum(memorandum);
             System.out.println("-------恢复状态:"+solution.ClassCount+"---"+solution.CodeSize+"-----"+solution.ProductCount);
        
        

    四、优缺点

    • 优点
      • 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。
      • 实现了信息的封装,使得用户不需要关心状态的保存细节。
    • 缺点
      • 消耗资源大,集合需要保存大量的备忘录对象,占用内存大。
  • 相关阅读:
    路由协议的优先级,以及管理距离 AD 和 metric 的区别
    pytorch tensorboard
    获取wifi密码信息(仅供学习使用,勿作他用)
    idea 显示启动程序和端口
    4项简化IT服务台任务的ChatGPT功能
    程序员公司合作保密协议范本
    Java并发编程—java多线程相关概念
    十三、聚簇索引和非聚簇索引
    MT3520B 丝印AS20B 2A电流 2.3V-6V输入、1.5MHz同步降压转换器
    空投:实现去中心化、建立DAO的必经之路
  • 原文地址:https://blog.csdn.net/Fu_Shi_rong/article/details/127112227