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

用群晖做网站网站建设及上线流程

用群晖做网站,网站建设及上线流程,看广告挣钱一天300元,黑龙江新闻头条最新消息【声明】本题目来源于卡码网#xff08;题目页面 (kamacoder.com)#xff09; 【提示#xff1a;如果不想看文字介绍#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是备忘录模式 #xff08;第17种模式#xff09; 备忘录模式#xff08;Meme… 【声明】本题目来源于卡码网题目页面 (kamacoder.com) 【提示如果不想看文字介绍可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是备忘录模式 第17种模式 备忘录模式Memento Pattern是⼀种⾏为型设计模式它允许在不暴露对象实现的情况下捕获对象的内部状态并在对象之外保存这个状态以便稍后可以将其还原到先前的状态。 【基本结构】 备忘录模式包括以下⼏个重要⻆⾊ 发起⼈Originator 需要还原状态的那个对象负责创建⼀个【备忘录】并使⽤备忘录记录当前时刻的内部状态。备忘录Memento : 存储发起⼈对象的内部状态它可以包含发起⼈的部分或全部状态信息但是对外部是不可⻅的只有发起⼈能够访问备忘录对象的状态。 备忘录有两个接⼝发起⼈能够通过宽接⼝访问数据管理者只能看到窄接⼝并将备忘录传递给其他对象。 管理者Caretaker : 负责存储备忘录对象但并不了解其内部结构管理者可以存储多个备忘录对象。客户端在需要恢复状态时客户端可以从管理者那⾥获取备忘录对象并将其传递给发起⼈进⾏状态的恢复。 【基本实现】 下面以Java代码作以简要说明 1. 创建发起⼈类可以创建备忘录对象 class Originator {private String state;public void setState(String state) {this.state state;}public String getState() {return state;}// 创建备忘录对象public Memento createMemento() {return new Memento(state);}// 通过备忘录对象恢复状态public void restoreFromMemento(Memento memento) {state memento.getState();} } 2. 创建备忘录类保存发起⼈对象的状态 class Memento {private String state;// 保存发起⼈的状态public Memento(String state) {this.state state;}public String getState() {return state;} } 3. 创建管理者维护⼀组备忘录对象 class Caretaker {private ListMemento mementos new ArrayList();public void addMemento(Memento memento) {mementos.add(memento);}public Memento getMemento(int index) {return mementos.get(index);} } 4. 客户端使用备忘录模式 /** * version Copyright (c) 2024 NCDC, Servo。 Unpublished - All rights reserved * file MementoMode.hpp * brief 备忘录模式 * autor 写代码的小恐龙er * date 2024/01/19 */ public class Main {public static void main(String[] args) {// 创建发起⼈对象Originator originator new Originator();originator.setState(State 1);// 创建管理者对象Caretaker caretaker new Caretaker();// 保存当前状态caretaker.addMemento(originator.createMemento());// 修改状态originator.setState(State 2);// 再次保存当前状态caretaker.addMemento(originator.createMemento());// 恢复到先前状态originator.restoreFromMemento(caretaker.getMemento(0));System.out.println(Current State: originator.getState());} } 【使用场景】 备忘录模式在保证了对象内部状态的封装和私有性前提下可以轻松地添加新的备忘录和发起⼈实现“备份”不过备份对象往往会消耗较多的内存资源消耗增加。 备忘录模式常常⽤来实现撤销和重做功能⽐如在Java Swing GUI编程中javax.swing.undo 包中的撤销undo和重做redo机制使⽤了备忘录模式。UndoManager 和UndoableEdit 接⼝是与备忘录模式相关的主要类和接⼝。 【C编码部分】 1. 题目描述 小明正在设计一个简单的计数器应用支持增加Increment和减少Decrement操作以及撤销Undo和重做Redo操作请你使用备忘录模式帮他实现。 2. 输入描述 输入包含若干行每行包含一个字符串表示计数器应用的操作操作包括 Increment、 Decrement、Undo 和 Redo。 3. 输出描述 对于每个 Increment 和 Decrement 操作输出当前计数器的值计数器数值从0开始 对于每个 Undo 操作输出撤销后的计数器值。 对于每个 Redo 操作输出重做后的计数器值。 4. C编码实例 /** * version Copyright (c) 2024 NCDC, Servo。 Unpublished - All rights reserved * file MementoMode.hpp * brief 备忘录模式 * autor 写代码的小恐龙er * date 2024/01/19 */#include iostream #include string #include vector #include stackusing namespace std;// 前置声明// 备忘录类 -- 保存发起⼈对象的状态 class Memento; // 发起人类 -- 可以创建备忘录对象 class Counter; // 管理者 -- 一组备忘录对象 class MementoManager;// 类的定义// 备忘录类 class Memento { // 成员数据 private:int _value;// 备忘录操作的成员函数 public:Memento(int value){SetValue(value);}void SetValue(int value){this-_value value;}int GetValue(){return this-_value;} };// 发起人 类 class Counter { // 成员数据 private:int _value;// 发起人的计数值std::stackMemento * _undoStack; // 发起人撤销操作的栈 std::stackMemento * _redoStack; // 发起人重新操作的栈// 成员函数 public:Counter(){}// 获取值int GetValue(){return this-_value;}// 增加计数值void IncreaseValue(Memento *memento){//清空重做的栈while(!_redoStack.empty()){_redoStack.pop();}_undoStack.push(memento);_value;}// 减少计数值void DecreaseValue(Memento *memento){//清空重做的栈while(!_redoStack.empty()){_redoStack.pop();}_undoStack.push(memento);_value--;}// 撤销操作void Undo(Memento *memento){if(!_undoStack.empty()){_redoStack.push(memento);_value _undoStack.top()-GetValue();}}// 重新操作void Redo(Memento *memento){if(!_redoStack.empty()){_undoStack.push(memento);_value _redoStack.top()-GetValue();}} };// 管理者 class MementoManager { // 成员数据 private:std::vectorMemento * _mementoVec;// 成员函数 public:// 增加备忘录void AddMemento(Memento *mento){_mementoVec.push_back(mento);}// 寻找备忘录 按照顺序 或者 备忘录中的计数值Memento * GetMemento(int index){if(index _mementoVec.size()) return nullptr;else return _mementoVec[index];} };// 客户端 int main() {// 操作类型string type ;// 新建 发起人 类 Counter *counter new Counter();// 新建备忘录管理者MementoManager *manager new MementoManager();// 新建备忘录Memento *memento nullptr;// 等待输入指令while(std::cin type){if(type Increment){memento new Memento(counter-GetValue());counter-IncreaseValue(memento);}else if(type Decrement){memento new Memento(counter-GetValue());counter-DecreaseValue(memento);}else if(type Undo){memento new Memento(counter-GetValue());counter-Undo(memento);}else if(type Redo){memento new Memento(counter-GetValue());counter-Redo(memento);}// 将备忘录添加至管理者中 【此时备忘录管理者可以去做其他的事情】manager-AddMemento(memento);// 输出计数器的值std::cout counter-GetValue() endl;}// 析构if(memento ! nullptr){delete memento;memento nullptr;}delete counter;counter nullptr;delete manager;manager nullptr;return 0; } ...... To be continued.
http://www.w-s-a.com/news/107932/

相关文章:

  • 连山区网站建设seo简历
  • 自助建站系统官方版太仓高端网站制作
  • 怎样只做自己的网站建设银行唐山分行网站
  • 咸阳鑫承网站建设软件开发公司网站模板
  • 百度怎么免费做网站网站建设大作业有代码
  • 小说素材网站设计素材网站特点
  • 如何建设一个好的网站WordPress主题设置数据库
  • 网站被模仿十堰网站制作公司
  • 怎么样做免费网站个人网站备案幕布
  • 做ppt的动图下载哪些网站制作一个网站需要多少时间
  • 公司网站开发制作备案中的网站
  • 怎么看网站的收录网站开发先前台和后台
  • 合肥市做网站多少钱wordpress网站布置视频
  • 中国建设人才网信息网站软件外包公司好不好
  • 网站建设与管理 市场分析上海网站建设公司排名
  • 怎么将公司网站设成首页网址关键词查询网站
  • 怎么用ps做网站ui邱县专业做网站
  • 国开行网站毕业申请怎么做大连旅顺口旅游攻略
  • 鲜花店网站源码成都专做婚介网站的公司
  • 合肥企业网站建设工哈尔滨公告
  • 华强北 做网站互联网服务平台入口
  • vi设计案例网站微信导航网站 dedecms
  • 青浦区做网站设计图片手绘图片
  • 做网站的基本功制作网站公司推荐
  • 阿里云快速建站教程个人网站 费用
  • 广东购物网站建设微信公众号制作模板免费
  • 阿里国际站韩语网站怎么做让移动网站
  • 北京外包做网站如何报价中国几大网络推广公司
  • 中国建设部网站关于资质wordpress 建app
  • 程序员找工作的网站哈尔滨建设信息网站