当前位置: 首页 > news >正文

设计模式-备忘录

备忘录(Memento)设计模式是为了保存对象当前状态,并在需要的时候恢复到之前保存的状态。以下是一个简单的C#备忘录模式的实现:

// Originator 类,负责创建和恢复备忘录
class Originator
{private string state;public string State{get { return state; }set { state = value; }}public Memento CreateMemento(){// 创建备忘录,保存状态return (new Memento(state));}public void SetMemento(Memento memento){// 恢复状态state = memento.State;}public void Show(){Console.WriteLine("State = " + state);}
}// 备忘录 Memento 类,负责保存 Originator 状态
class Memento
{private string state;public Memento(string state){this.state = state;}public string State{get { return state; }}
}// 管理者 Caretaker 类,负责保存备忘录,不应该对备忘录的内容进行操作和暴露
class Caretaker
{private Memento memento;public Memento Memento{get { return memento; }set { memento = value; }}
}// 客户端代码
class Program
{static void Main(string[] args){// 创建发起人对象Originator originator = new Originator();originator.State = "State #1";originator.Show();// 保存状态Caretaker caretaker = new Caretaker();caretaker.Memento = originator.CreateMemento();// 改变 originator 状态originator.State = "State #2";originator.Show();// 恢复状态originator.SetMemento(caretaker.Memento);originator.Show();Console.ReadKey();}
}

在这个例子中,Originator类负责保存和恢复状态,Memento类负责保存状态,而Caretaker类负责保存Memento对象,不应该对其进行操作。客户端代码演示了如何使用这些类来保存和恢复对象状态。

http://www.lryc.cn/news/409832.html

相关文章:

  • openEuler安装docker,加速镜像拉取
  • angular入门基础教程(七)系统路由
  • Unity Canvas动画:UI元素的动态展示
  • apache.commons.pool2 使用指南
  • 【Python面试题收录】Python编程基础练习题②(数据类型+文件操作+时间操作)
  • typescript 定义类型
  • 基于Java+SpringBoot+Vue的的课程作业管理系统
  • 分布式日志分析系统--ELK
  • Linux初学基本命令
  • 如何优化PyTorch以加快模型训练速度?
  • 用最简单的方法对大数据进行处理 vs spark(不需要安装大数据处理工具)
  • 非线性校正算法在红外测温中的应用
  • python----线程、进程、协程的区别及多线程详解
  • 将 magma example 改写成 cusolver example eqrf
  • 微信小程序教程007:数据绑定
  • Git -- git stash 暂存
  • 基于YOLO的植物病害识别系统:从训练到部署全攻略
  • 数据库开发:MySQL基础(二)
  • 实现物理数据库迁移到云上
  • [Spring] MyBatis操作数据库(进阶)
  • 【Websim.ai】一句话让AI帮你生成一个网页
  • 云计算实训16——关于web,http协议,https协议,apache,nginx的学习与认知
  • 2024年必备技能:小红书笔记评论自动采集,零基础也能学会的方法
  • 【Gitlab】SSH配置和克隆仓库
  • [Day 35] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • Vue 3 中使用 inMap.js 实现蜂窝热力图的可视化
  • nginx隐藏server及版本号
  • Oracle DBMS_XPLAN包
  • 【ffmpeg命令入门】分离音视频流
  • 小红书笔记评论采集全攻略:三种高效方法教你批量导出