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

打开网站 显示建设中友情链接购买网站

打开网站 显示建设中,友情链接购买网站,今日丹东全图,文创产品设计方法软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

汇总目录链接:【玩转23种Java设计模式】学习目录汇总整理

文章目录

  • 一、简介
  • 二、实例
    • 1、文本编辑器(TextEditor)
    • 2、管理者(Caretaker)
    • 3、客户端(MementoPatternExample)
  • 三、总结
    • 1、优点
    • 2、缺点
    • 3、应用场景

一、简介

  备忘录模式(Memento Pattern)是一种行为型设计模式,用于保存对象的状态,以便在未来可以恢复到之前的某个状态。该模式避免了直接暴露对象的内部状态,从而实现了数据的封装性。

主要角色:

  • Originator(发起人):创建并存储自身状态到备忘录中,可以从备忘录中恢复状态。
  • Memento(备忘录):存储发起人的状态,提供给发起人恢复状态的接口。
  • Caretaker(管理者):负责保存和管理备忘录,但不能操作备忘录内容。

二、实例

例如:模拟文本编辑器中“撤销”操作的实现。

1、文本编辑器(TextEditor)

class TextEditor {private String text;public void setText(String text) {this.text = text;}public String getText() {return text;}// 创建备忘录public Memento save() {return new Memento(text);}// 从备忘录恢复状态public void restore(Memento memento) {this.text = memento.getText();}// Memento:备忘录内部类static class Memento {private final String text;private Memento(String text) {this.text = text;}private String getText() {return text;}}
}

2、管理者(Caretaker)

class Caretaker {private final List<TextEditor.Memento> mementoList = new ArrayList<>();public void addMemento(TextEditor.Memento memento) {mementoList.add(memento);}public TextEditor.Memento getMemento(int index) {return mementoList.get(index);}
}

3、客户端(MementoPatternExample)

public class MementoPatternExample {public static void main(String[] args) {TextEditor editor = new TextEditor();Caretaker caretaker = new Caretaker();// 初始状态editor.setText("Hello");System.out.println("Initial Text: " + editor.getText());caretaker.addMemento(editor.save());// 修改状态1editor.setText("Hello, World");System.out.println("Updated Text: " + editor.getText());caretaker.addMemento(editor.save());// 修改状态2editor.setText("Hello, Design Patterns");System.out.println("Updated Text: " + editor.getText());caretaker.addMemento(editor.save());// 撤销操作editor.restore(caretaker.getMemento(1));System.out.println("After Undo: " + editor.getText());// 再次撤销editor.restore(caretaker.getMemento(0));System.out.println("After Second Undo: " + editor.getText());}
}

三、总结

1、优点

  • 封装性好:发起人和备忘录内部状态的实现细节对外界透明,保证了对象的封装性。
  • 状态恢复:可以轻松保存和恢复对象的状态,适合需要频繁回退操作的场景。
  • 灵活性高:支持保存多个状态,提供多种恢复方式。

2、缺点

  • 资源消耗大:如果状态对象较大或需要保存的状态很多,可能会消耗较多内存。
  • 管理复杂:需要一个管理机制来保存和恢复状态,增加了系统复杂性。

3、应用场景

  • 撤销和重做功能:如文本编辑器、图形编辑器。
  • 游戏存档:在游戏中保存和恢复玩家的进度。
  • 事务性操作:在操作失败时可以回滚到之前的状态。
  • 状态恢复:适用于需要频繁切换对象状态的场景。
http://www.hengruixuexiao.com/news/42548.html

相关文章:

  • 网站怎么做子页合肥网络seo推广服务
  • 网站建设seoppt如何做推广
  • 怎么快速建动态网站高质量外链
  • 039 织梦云idc网站源码深圳网络营销渠道
  • 武汉专业做网站公司宁波seo外包
  • 我的文章被其他公司网站抄袭怎么做怎么制作自己的个人网站
  • 网站建设 功能需求电商中seo是什么意思
  • 网站留言板怎么做phpsql新网站百度seo如何做
  • 建设公众号网站seo编辑培训
  • 网页开发和网站开发农产品营销策划方案
  • 在线赚钱网站sem是什么品牌
  • 网站banner怎么做chrome手机安卓版
  • cms网站开发流程快速排名官网
  • 做百度网站排名软件百度推广费用
  • 有没有教做韩餐的网站seo网络优化推广
  • 深圳罗湖区网站建设公司seo网络推广案例
  • 最好的韩国服务器电商seo优化是什么
  • 用dw做的网站怎么发布到网上seo搜索引擎优化视频
  • 刚创业 建网站深圳网络营销和推广方案
  • wordpress多站点搭建淘宝一个关键词要刷多久
  • 一个好的网站需要具备什么百度点击率排名有效果吗
  • 动态网站开发常见语言企业营销策划书范文
  • 八亿建站软文文章
  • logo一键生成器免费版原型图seo外链招聘
  • 做网站和软件有区别吗餐饮营销引流都有什么方法
  • 可以做国外购物的网站大数据营销的案例
  • 爱是做的电影网站搜索引擎优化英文简称为
  • 网站产品展示怎么做广告软文范例大全100字
  • 二手优品哪个网站做企业建站模板
  • 推荐扬中网站建设广州网站开发多少钱