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

设计模式-备忘录模式

概述

备忘录模式也是一种行为型的设计模式其主要的功能是存储和撤销的功能,可以恢复之前的状态,在实际的开发中,几乎是必不可少的功能,现在几乎所有的软件都少不了撤销的功能,如果没有撤销,那在误操作后会很麻烦,那如何实现这个功能呢,如果有这方面开发经历的同学肯定想到可以使用栈来存储,将操作都存储在栈中,操作后就入栈,撤销就出栈,这样做当然是可以的,那接下来就结合实际的例子来学习一下这部分的内容该如何编写吧,以下是模拟Word的操作。


例子:模拟Word的操作,在用户使用 加粗,下划线,斜体后使用撤销操作后可以返回之前的操作。

备忘录模式

using System.Numerics;
using static POC;internal class Program
{private static void Main(string[] args){WordEditor editor = new WordEditor();//创建word编辑器Caregiver caregiver = new Caregiver();//创建看护者editor.operate = "加粗";caregiver.SaveMemoType(editor.Save());editor.operate = "下划线";caregiver.SaveMemoType(editor.Save());editor.operate = "斜体";Console.WriteLine($"当前操作:{editor.operate}");editor.Restore(caregiver.RestoreMemoType());Console.WriteLine($"撤销一次操作:{editor.operate}");editor.Restore(caregiver.RestoreMemoType());Console.WriteLine($"撤销两次操作:{editor.operate}");}public class MemoType//备忘录类{public string operate { get; set; }public MemoType(string OP){operate = OP;}}public class WordEditor//Word编辑器(发起人){public string operate { get; set; }public MemoType Save(){return new MemoType(operate);}public void Restore(MemoType memoType){operate = memoType.operate;}}public class Caregiver//监护者{private readonly Stack<MemoType> memo = new Stack<MemoType>();public void SaveMemoType(MemoType memoType){memo.Push(memoType);}public MemoType RestoreMemoType(){return memo.Pop();}}
}

输出结果:

当前操作:斜体
撤销一次操作:下划线
撤销两次操作:加粗


http://www.mrgr.cn/news/8371.html

相关文章:

  • Docker
  • AI数字时代客户体验白皮书5G云算力网络云网终端AIGC人工智能宽带政企物联网专线 IDC智慧城市专家学者教授培训讲师分享
  • Adobe After Effects的插件--------CC Ball Action
  • Apache Spark 的基本概念和在大数据分析中的应用。
  • pycharm 隐藏 __ init __ .py 文件
  • SpringBoot自动装配
  • 【小迪安全笔记V2022】信息打6~8
  • 秋招突击——8/16——字节广告业务——面经整理——二面挂
  • 【极速前进】20240804:Case2Code提升归纳推理能力、归纳推理和演绎推理、LLM Patch-level训练、LLM内部冲突和上下文冲突
  • Selenium + Python 自动化测试20(PO模式)
  • 常见操作系统上启动 MySQL 服务的命令:
  • Java常用的网络IO模型与限流算法总结
  • 深入理解 WebSocket:从基础概念到实战应用
  • 知识付费小程序引领线上直播
  • 【HTML】为网页添加表单(控件)
  • 计算机视觉(CV)技术的优势和挑战。
  • 【前端基础篇】JavaScript之DOM介绍
  • yolact导出onnx
  • 【每日一题 | 数据结构 | 树的转换与遍历】
  • Oracle SQL - 合并重叠的期间