行为型设计模式总结

行为型设计模式总结

Intro

行为型模式是将不同的行为代码解耦,从而解决特定场景问题的一些经典结构。

行为型设计模式主要解决的就是“类或对象之间的交互”问题。行为型设计模式比较多,有 11 个,几乎占了 23 种经典设计模式的一半。它们分别是:观察者模式、模板模式、策略模式、职责链模式、状态模式、迭代器模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

总结

责任链(Chain of Responsibility)

多个处理器依次处理同一个请求。一个请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再传递给 C 处理器,以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责。

模板方法模式(Template Method)

定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算的结构即使重定义该算法的某些特定步骤。

换句话说,公用的处理逻辑放在父类中处理,不同的处理逻辑放在子类中

迭代器(Iterator)

提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。常用于遍历一个集合对象

备忘录模式(Memento)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。多用于数据备份和恢复的场景。

状态模式(State)

当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时就可以考虑状态模式

观察者模式(Observer)

在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。将观察者和被观察者代码解耦。

命令模式 (Command)

将一个请求封装为一个对象,从而使得可以用不同的请求进行参数化,对请求排队或者记录请求日志以及支持可撤销的操作。

中介模式(Mediator)

中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。

策略模式(Strategy)

策略模式会定义一系列算法,从概念上来看,所有这些算法完全的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用类之间的耦合。

解释器模式(Interpreter)

当有一个语言需要解释执行,并且你可以将该语言中的句子表示为一个抽象语法树时,可以使用解释器模式

访问者模式(Visitor)

访问者模式适用于数据结构相对稳定的系统,它把数据结构和作用域结构上的操作之间的耦合解脱开,使用操作集合可以相对自由地演化。

Reference

  • https://github.com/WeihanLi/DesignPatterns

  • 责任链模式

  • 模板方法模式

  • 迭代器模式

  • 备忘录模式

  • 状态模式

  • 观察者模式

  • 命令模式

  • 中介者模式

  • 策略模式

  • 访问者模式

  • 解释器模式

  • 访问者模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

地理生物高考成绩查询2021,2021北京中考地理生物成绩查询时间【已公布】

中考地理和生物成绩查询是什么时候呢?尚不了解的考生看过来,下面由出国留学网小编为你精心准备了“2021北京中考地理生物成绩查询时间【已公布】”,持续关注本站将可以持续获取更多的考试资讯!2021北京中考地理生物成绩查询时间【已公布】北京…

10-1 5-1 查询销售便携式电脑但不销售PC的厂商 (20 分)(分析+详解)

一:题目 本题目要求编写SQL语句, 查询销售便携式电脑但不销售PC的厂商。 提示:请使用SELECT语句作答。 表结构: CREATE TABLE product ( maker CHAR(20) , --制造商model CHAR(20) NOT NULL, --产品型号type CHAR(20), …

在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入

MongoDB,被归类为NoSQL数据库(其实我更觉得MongoDb是介于关系型数据库和非关系型数据库之间,此外,在我看来在很多场景中MongoDb都可以取代关系型数据库。),是一个以类JSON格式存储数据的面向文档的数据库系…

815 计算机专业基础综合,2018年华东理工大学信息科学与工程学院815计算机专业基础综合之计算机操作系统考研基础五套测试题...

一、选择题1. 在UNIX 系统中,目录结构采用( )。A. 单级目录结构B. 二级目录结构C. 单纯树形目录结构D. 带链接树形目录结构【答案】D2. 中断向量可提供( )。A. 被选中设备的地址B. 传送数据的起始地址C. 中断服务程序入口地址D. 主程序的断点…

10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例)

一:题目 本题目要求编写SQL语句, 查询至少生产两种不同型号的计算机(PC或便携式电脑)且机器速度至少为133的厂商,输出结果按照制造商升序排列。 提示: 本题有三种情况: (1) 至少生产两种不同PC的厂商 &a…

ASP.NET Core学习资源汇总

ASP.NET Core入门学习资源汇总篇幅比較長,分为七个部分。(一)认识.NET Core(二)Vistual Studio安装、调试(三)Asp.Net Core入门指南与学习路线(四)入门级实战项目手册、官…

用计算机探索 按一定规律排列,探索规律练习题1

探索规律练习题1、我们平常用的数是十进制数,如26392103610231019100,表示十进制的数要用10个数码(又叫数字):0,1,2,3,4,5,6,7,8,9。在…

简单快速导出word文档

最近,我写公司项目word导出功能,应该只有2小时的工作量,却被硬生生的拉长2天,项目上线到业务正常运行也被拉长到2个星期。为什么如此浪费时间呢?1)公司的项目比较老,采用硬编码模式,…

10-3 5-3 查询生产最高速度的计算机(PC或便携式电脑)厂商 (20 分)

一:上码 -- 查询生产最高速度的计算机(PC或便携式电脑)厂商,查询结果按照厂商升序排列-- 分析:1.从pc表和product表当中当中找到速度最快的 表1 -- 2.从laptop表和product表当中找到速度最快的 表2 -- 3.将表1和表2联合起来找速…

如何让多端口网站用一个nginx进行反向代理实际场景分析

前段时间公司要整合服务器资源,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今零零散散部署在生产上一些可视化UI:apollo&…

10-4 5-4 查询至少生产三种不同速度PC的厂商 (20 分)

一:上码 -- 查询至少生产三种不同速度PC的厂商-- 分析:1.联合pc和product表,字段为厂商和速度 表1 -- 2.按厂商名字进行分组统计厂商的个数,筛选条件为个数大于3的 表2 -- 3.将表2 做为子表筛选出 maker-- 1. -- selec…

【Azure Show】|第五期(下)当下最火热的Blazor与App Service, 嘉宾闫晓迪Alan Tsai...

欢迎来到Azure Show!Azure Show欢迎来到Azure Show第五期(下),继上集分享彭爱华和阿法兔两位老师的跨界经验之后,本期我们【MVP面对面】栏目邀请到远在新西兰的微软最有价值专家闫晓迪和大家聊聊新西兰的技术生态,当然…

台式计算机听音乐,配置一台4000元的台式电脑,主要用于日常办公及上网查资料,听音乐,看电影及学习....

满意答案asshnjgs2014.04.02采纳率:44% 等级:9已帮助:861人CPU:Intel 赛扬D341 2.93G(散) CPU适用类型:台式CPU CPU内核:Prescott 主频(MHz):2930MHz 插槽类型:Socket 775 制作工艺(微米):0.09 微米 L2缓存(KB):256KB FSB(MHz)…

10-5 5-5 查询只卖三种不同型号PC的厂商 (20 分)

一:上码 -- 查询只卖三种不同型号PC的厂商-- 分析:1.首先 pc和product表联合 字段为厂商 -- 2.统计这些厂商的个数过滤掉型号小于3的厂商 表1 -- 3.然后laptop和product联合 表2,printer和product联合 字段均为厂商 表3 -- …

ASP.NET Core Blazor Webassembly 之 组件

关于组件现在前端几大轮子全面组件化。组件让我们可以对常用的功能进行封装,以便复用。组件这东西对于搞.NET的同学其实并不陌生,以前ASP.NET WebForm的用户控件其实也是一种组件。它封装html代码,封装业务逻辑,对外提供属性事件等…

122. 买卖股票的最佳时机 II008(贪心算法+思路)

一:题目 给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易&#xf…

广东省计算机应用考试题,广东省计算机等级考试一级试题

广东省计算机等级考试一级试题一、理论部分 (共20分,每空1分)将正确答案填写在考试文件夹中“第一题答案.XLS”的Sheet1相应的位置上1. 解释程序的功能是 ( )。A解释执行高级语言源程序 B将高级语言源程序翻译成目标程序C解释执行汇编语言源程序 D将汇编语言源程序翻…

麒麟系统兼容安卓生态 弥补生态短板

日前,麒麟软件发布了银河麒麟操作系统最新版本V10。据媒体报道,麒麟软件是国内唯一一个通过CMMI5级质量评估的操作系统企业,在XC市场份额占有率达到70%以上。麒麟V10系统可以兼容安卓生态。集成了自研的UKUI桌面环境,支持多壁纸、…

夏门大学的计算机专业排第几,2019厦门大学专业排名

厦门大学由著名爱国华侨领袖陈嘉庚先生于1921年创办,是中国近代教育史上第一所华侨创办的大学,也是国家“211工程”和“985工程”重点建设的高水平大学。为了让大家更好的了解这所大学的专业排名,下面是学习啦小编给大家带来的厦门大学专业排…

763. 划分字母区间009(贪心算法+思路+详解+图示)

一:题目: 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 示例: 输入:S "ababcbacadefegdehijhklij" 输出…