java设计模式之行为型设计模式
行为型设计模式:
责任链(Chain of Responsibility):
用途:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
场景:
- 有多个对象可以处理一个请求,哪个对象处理该请求运行时自动确定。
- 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
- 可处理一个请求的对象集合被动态指定。
结构图
已知应用
- Java Servlet : 1 FilterChain = n Filter + 1 Servlet过滤器链,对请求进行过滤
- Spring MVC : 1 HandlerExecutionChain = nHandlerInterceptor + 1 handler请求拦截器,对请求进行拦截
- Spring MVC : 1 RequestResponseBodyAdviceChain = mRequestBodyAdvice + n ResponseBodyAdvice如:统一Restful风格的响应状态
相关模式
- 责任链常用Composite一起使用。这种情况下,一个构件的父构件可作为它的后继。
迭代器(Iterator)
用途:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
场景:
- 访问一个聚合对象的内容而无需暴露它的内部表示。
- 支持对聚合对象的多种遍历。
- 为遍历不同的聚合结构提供一个统一的接口。
结构图
已知应用
- ArrayList
- HashSet
相关模式
- Composite:迭代器常被应用到向组合这样的递归结构上。
- Factory Method:多态迭代器靠Factory Method来实例化适当的迭代器子类。
策略模式(Strategy)
用途:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
场景:
- 许多相关的类只是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
- 一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的策略类中以代替这些条件语句。
结构图
已知应用
- Arrays.sort
- Collections.sort
模板方法(Template Method)
用途:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
场景:
- 实现算法的不变部分,并将可变的行为留给子类来实现。
- 各子类中的公共行为应被提取出来并集中到一个公共父类中以避免代码重复。
结构图
已知应用
AbstractQueueSynchronizer
public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt(); }
相关模式
- Strategy:模板方法使用继承来改变算法的一部分,Strategy使用委托来改变整个算法。
- Factory Method常被模板方法调用。
java设计模式之行为型设计模式相关推荐
- JavaScript设计模式之创建型设计模式
此系列总结与<JavaScript设计模式>,总共分为创建型设计模式.结构型设计模式.行为型设计模式.技巧型设计模式和架构性设计模式五大类. github原文地址:YOU-SHOULD-K ...
- java设计模式之创建型设计模式
创建型设计模式: 抽象工厂(Abstract Factory): 用途:提供一个接口以创建一系列相关或相互依赖的对象,而无需指定具体的类. 场景: 一个系统要独立于它的产品的创建. 一个系统要由多个产 ...
- Java内功心法,创建型设计模式包括哪些
1. 单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点. Class Diagram 使用一个私有构造函数.一个私有静态变量以及一个公有静态函数来实现. 私有 ...
- 【设计模式】创建型设计模式
文章目录 1. 基础 ①如何学习设计模式 ② 类模型 ③ 类关系 2. 设计原则 3. 模板方法 ① 定义 ②背景 ③ 要点 ④ 本质 ⑤ 结构图 ⑥ 样例代码 4. 观察者模式 ① 定义 ②背景 ③ ...
- android 工厂模式创建,7、Android设计模式---(创建型设计模式)抽象工厂模式
一.介绍,定义 抽象工厂模式也是创建型模式之一,抽象工厂模式起源于对不同操作系统的图形化解决方案,如不同操作系统的按钮和文本框控件及其实现. 为创建一组相关或者相互依赖的对象提供接口,而不需要具体指定 ...
- 《Python编程实战:运用设计模式、并发和程序库创建高质量程序》—— 第1章 Python的创建型设计模式...
本节书摘来自华章出版社<Python编程实战:运用设计模式.并发和程序库创建高质量程序>一 书中的第1章,第1.1节,作者:(美) Mark Summerfield,更多章节内容可以访问云 ...
- javaScript设计模式-创建型设计模式
我们大家一听到设计模式就感觉设计模式是一个高端的东西,到底什么是设计模式呢?其实设计模式也就是我们的前辈在写代码的时候遇到的问题,提出的解决方案,为了方便人与人之间的交流,取了个名字,叫做设计模式. ...
- 从零开始单排学设计模式「简单工厂设计模式」黑铁 III
阅读本文大概需要 2 分钟. 本篇是设计模式系列的第二篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统.所以现在打算重写,加上距离现在也有一段时间了,也算 ...
- python算法基础设计模式,python常见的设计模式
Python有设计模式么 Python设计模式主要分为三大类:创建型模式.结构型模式.行为型模式;三 大类中又被细分为23种设计模式,以下这几种是最常见的. 单例模式:是一种常用的软件设计模式,该模式 ...
最新文章
- 20145234黄斐《信息安全系统设计基础》第九周学习总结(课本部分)
- 下载CentOS7、CentOS8镜像(ISO)
- C语言二个多项式的加法poly add算法(附完整源码)
- java序列化如何实现_Java实现序列化与反序列化的简单示例
- 深入理解javascript系列(十七):函数柯里化
- Spring boot Tomcat配置
- android java打开wap链接,Android 链接 java 服务无法打开链接的有关问题
- 新鲜出炉的2012年8月桌面日历壁纸免费下载
- 文件和参数一起上传_基于netty的文件上传下载组件
- 计算机运算法则图鉴,AP微积分BC TI-Nspire计算器使用指南 正确使用计算器5分到手轻而易举...
- java编写自动化脚本_java+selenium自动化脚本编写
- RSLogix 5000下载程序方法
- 数学分析教程(第三版)读后感
- ppt流程图箭头分叉_职场PPT实战:流程图只能箭头方框?设计师教你新思路
- linux下的网络·环境部署
- navicat如何连接mysql?navicat 连接mysql Navicat使用教程
- Cocos2d-x 2.0 百例精讲:如何让一个精灵跟随触点移动
- 【爱生活之咖啡】咖啡入坑记--咖啡豆的那些事
- Luogu P1491 集合位置 (spfa--次短路)
- python微信加人_Python微信机器人自动添加好友自动回复
热门文章
- 用java写jsp页面跳转页面跳转_五种 JSP页面跳转方法详解
- python自动化常用数字_Python全栈自动化系列之Python编程基础(基本数据类型)
- 智能手机RAM和ROM的区别以及SD卡的作用
- SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
- python datatime 平均值_python-熊猫时间序列:时间戳列的平均值
- 《2021多多阅读报告》发布,95后、00后图书消费潜力攀升,大学生群体拼单量同比增长387%...
- 联想杨元庆:未来五年研发总投入将会超过1000亿人民币
- 跌落测试显示:iPhone 13/13 Pro耐用性和前代几乎相同
- iPhone13最新外观售价曝光:好看还便宜
- 小米12 Ultra相机参数曝光:1.92亿像素主摄+1英寸超大底