设计模式之行为模式(1)-状态、策略、责任链、访问者
2019独角兽企业重金招聘Python工程师标准>>>
1 状态模式
某个对象中,设置一个表示状态的成员,与该对象的状态相关行为,由表示这个对象的具体状态类实现。
具体的状态类在执行时,根据执行情况修改其所属对象的状态成员。
class State {void do(Switcher sw)};class Switcher{State state;void click() {state.do(this)}}class StateOpen : State {void do(Switcher sw) {...sw.state = new StateTwo())}};class StateClose() {void do(Switcher sw) {...sw.state = new StateClick();}};
2 策略模式
将一系列算法,按统一的接口进行封装,使他们可以相互替换。
定义Strategy和Context接口,Strategy接口的具体子类实现算法,
Context的子类包含数据。使Strategy的子类可访问Context中所需的数据。
class Context;class Strategy {Context calc(Context args);};class AddContext : Context {int number1;int number2;};class ResultContext : Context {int number;};class AddStrategy : Stratrgy {Context calc(Context ctx) {AddContext ac = (AddContext)ctx;ResultContext rc;rc.number = ac.number1 + ac.number2;return rc;}};class MultiplyStratrgy ....
3 责任链模式
将各个处理对象组成一个处理链。
class Handle{void process();};class HandleOne : Handle{Handle other_handler;void process() {...handler.process();}};
4 访问者模式
不修改数据类的前提下,实现对数据类中数据的不同操作。
class Visitor {void visit(int value);};class DataContainer {list<int> dataList;void accept(Visitor visitor) {iterator iter = dataLit.begin();while ( iter != dataList.end() ) {visitor.visit(iter.value);++iter;}}};class PrintVisitor {void visit(int value) {printf("%d\n", value);}};class SummaryVisitor {int sum;void visit(int value) {sum += value;}};
转载于:https://my.oschina.net/luckysym/blog/183166
设计模式之行为模式(1)-状态、策略、责任链、访问者相关推荐
- 设计模式——行为型模式之责任链模式(简简单单入门责任链,理解I/O流消息怎么逐步传递处理以及服务器框架转发)
文章目录 前言 一.责任链模式定义 二.责任链模式结构 三.责任链高级应用 四.责任链模式优缺点 设计模式系列文章 结尾 前言 作者更有一系列设计模式文章(还在持续更新),图例丰富,少量代码,适合入门 ...
- php审批功能的实现代码,PHP实现基于状态的责任链审批模式详解
本文实例讲述了PHP实现基于状态的责任链审批模式.分享给大家供大家参考,具体如下: 我们开发网站,除了前后,还有后台,除了内容管理,很多时候要涉及到『审批』. 比如:商务部要做个专题推广活动,活动中需 ...
- 责任链模式实践之Zuul责任链模式
责任链模式实践之Zuul责任链模式 一,什么是责任链模式 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对 ...
- 设计模式--常用8个设计模式 单例-策略-责任链-装饰者-迭代器模式-观察者模式-常用设计模式
1创建型的设计模式-主要有单例模式和工厂模式 对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题 2结构型的设计模式-主要有代理模式和适配 ...
- 设计模式(一)Chain Of Responsibility责任链模式
设计模式篇章,源于网课的学习,以及个人的整理 在我们接收用户提交的字符时,常常会使用到过滤,在学习责任链模式前,我们是这样做的 1.定义一个类 public class MsgProcesser {S ...
- 23种设计模式C++源码与UML实现--责任链模式
责任链模式 Chain of Responsibility CoR模式,也叫责任链模式或者责任连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间 ...
- 设计模式-责任链模式之**动态配置责任链**
责任链的优势劣势我就不说,百度上很多. 1.怎么:动态配置责任链 通过配置文件yml来指定你的责任链的执行顺序. 地址 配置文件如何配置,怎么读取 为什么:动态配置责任链 为了方便配置这个链条的执行顺 ...
- java 职责链模式_Java中的责任链模式
java 职责链模式 当应有几个处理器来执行某项操作并为这些处理器定义特定顺序时,就需要采用责任链设计模式. 在运行时处理器顺序的可变性也很重要.模式的UML表示如下: 处理程序定义处理器对象的一般结 ...
- 责任链模式与lambda重构责任链模式
一.概念以及背景 责任链模式(Chain of Responsibility Pattern):责任链模式是一种创建处理对象序列(比如操作序列)的通用方案.一个处理对象可能需要在完成一些工作之后,将结 ...
- 设计模式-行为型模式,状态模式(14)
在状态模式(State Pattern)中,类的行为是基于它的状态改变的.这种类型的设计模式属于行为型模式. 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context ...
最新文章
- 梯度下降到底是什么?
- 链表问题8——将单向链表按某值划分成左边小、中间相等、右边大的形式(进阶)
- 玩转java(Android)注解
- ActiveX(五)更好的“ActiveX”?
- python语言能做什么软件-什么是Python语言,Python语言可以用来做什么?
- 【Kotlin】Kotlin 领域特定语言 DSL 原理 一 ( DSL 简介 | 函数 / 属性扩展 )
- huffman编码压缩算法
- yii2 behavior 排除某个方法_中学科目二 | 教学方法
- flex java类转成_Flex 与 java 通讯 【转】
- Ellipsoid HDU - 5017(模拟退火)
- linux===Ubuntu修改设备名称
- 平面设计背景素材|打造超酷的炫彩光束光效海报!
- mini web框架-2-显示页面
- opengl入门(ubuntu版)(一)
- 计算机开机显示花屏,win7电脑开机过程中出现花屏怎么办
- canon l11121e驱动_佳能打印机l11121e驱动下载
- oracle的成本核算,ORACLE-EBS-最新成本管理手册
- java定义类模板_定义模板——函数模板和类模板
- java资源使用效率较高,Java 进程资源使用率较高问题定位
- 宇信易诚 两季度亏损与高管出走的背后
热门文章
- 【测试】软件测试分类体系系统学习
- java多线程创建一个简单的案例
- 软件测试—软件测试基础知识—测试用例设计的方法之场景法、正交试验法和错误推断法
- java jdbc 工具_JDBC 工具类
- php 中 date转换为字符串,PHP 时间与字符串的相互转化
- 学习前端需要掌握什么基础?
- 学好前端的 6 点建议,企业需要什么样的Web前端人才?
- redis 获取所有的key_在微博微信场景下学习Redis数据结构
- 两轮差速机器人舵机转轴示意图_灵活、快捷的机房巡检机器人少不了伺服电动轮...
- popup弹出html页面,在页面加载时打开所有弹出窗口popup.html