设计模式-备忘录模式

devtools/2024/9/24 14:38:19/

概述

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

相关文章

SOL项目开发代币DApp的基本要求、模式创建与海外宣发策略

Solana&#xff08;SOL&#xff09;作为一个高性能区块链平台&#xff0c;以其快速的交易速度和低交易成本吸引了大量开发者和投资者。基于Solana开发的去中心化应用程序&#xff08;DApp&#xff09;和代币项目正逐步成为区块链领域的重要组成部分。要成功开发并推广一个SOL项…

Java二十三种设计模式-命令模式(18/23)

命令模式&#xff1a;将请求封装为对象的策略 概要 本文全面探讨了命令模式&#xff0c;从基础概念到实现细节&#xff0c;再到使用场景、优缺点分析&#xff0c;以及与其他设计模式的比较&#xff0c;并提供了最佳实践和替代方案&#xff0c;旨在帮助读者深入理解命令模式并…

前端打字效果

页面效果链接&#xff0c;点击查看https://live.csdn.net/v/419208?spm1001.2014.3001.5501 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

字符串String概述,遍历字符串

String的注意点 字符串的内容是不会发生改变的&#xff0c;它的对象在创建后不能被更改 string是Java定义好的一个类&#xff0c;定义在java.long包中&#xff0c;所以使用的时候不需要导入包。 Java程序中的所有字符串文字&#xff08;例如“abcdefg”&#xff09;&#xf…

基于Springboot宠物商城网站系统--论文pf

TOC springboot508基于Springboot宠物商城网站系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们…

设计模式---构建者模式(Builder Pattern)

构建者模式&#xff08;Builder Pattern&#xff09; 是一种创建型设计模式&#xff0c;旨在将复杂对象的构建过程与其表示分离。它允许使用相同的构建过程创建不同的表示。该模式通常用于构建复杂对象&#xff0c;这些对象由多个部分组成或具有多个可选属性。 构建者模式的核…

2024年最新版JavaScript学习笔记【3万字总结】(更新中...)

本篇文章是记录来自黑马pink老师2023年课程的学习笔记&#xff0c;不得不说pink老师讲的是真的超级棒&#xff01; 内容也是非常丰富的&#xff0c;本篇文章我也是基于在原始课程的基础上&#xff0c;添加了一些自己的写法&#xff0c;还有一些小案例内容。所有涉及到的Jav…

基于数据复杂度的数据库选型

数据模型的选择对于 IT 系统的开发至关重要&#xff0c;它不仅决定了数据存储和处理的方式&#xff0c;影响系统的性能、扩展性以及维护性等。本质上来说&#xff0c;不同的数据模型反映了我们对业务问题的不同思考和抽象程度。 今天我们从不同数据模型对于复杂数据和关系的支…