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

六安政务中心网站韶关网站建设

六安政务中心网站,韶关网站建设,网址大全123官方网站,公司和个人均不能备案论坛类网站行为型设计模式 文章目录 行为型设计模式一、概述二、责任链模式#xff08;Chain of Responsibility Pattern#xff09;三、命令模式#xff08;Command Pattern#xff09;四、解释器模式#xff08;Interpreter Pattern#xff09;五、迭代器模式#xff08;Iterato…行为型设计模式 文章目录 行为型设计模式一、概述二、责任链模式Chain of Responsibility Pattern三、命令模式Command Pattern四、解释器模式Interpreter Pattern五、迭代器模式Iterator Pattern六、中介者模式Mediator Pattern七、备忘录模式Memento Pattern八、观察者模式Observer Pattern九、状态模式State Pattern十、策略模式Strategy Pattern十一、模板模式Template Pattern十二、访问者模式Visitor Pattern 一、概述 这些设计模式特别关注对象之间的通信 责任链模式Chain of Responsibility Pattern命令模式Command Pattern解释器模式Interpreter Pattern迭代器模式Iterator Pattern中介者模式Mediator Pattern备忘录模式Memento Pattern观察者模式Observer Pattern状态模式State Pattern策略模式Strategy Pattern模板模式Template Pattern访问者模式Visitor Pattern 二、责任链模式Chain of Responsibility Pattern 职责链模式Chain of Responsibility Pattern, 又叫 责任链模式为请求创建了一个接收者对象的链。这种模式对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求那么它会把相同的请求传给下一个接收者依此类推。 Handler : 抽象的处理者, 定义了一个处理请求的接口, 同时含义另外 HandlerConcreteHandlerA , B 是具体的处理者, 处理它自己负责的请求 可以访问它的后继者(即下一个处理者), 如果可以处理当前请求则处理否则就将该请求交个 后继者去处理从而形成一个职责链Request 含义很多属性表示一个请求 缺点 性能会受到影响特别是在链比较长的时候因此需控制链中最大节点数量一般通过在 Handler 中设置一个最大节点数量在 setNext()方法中判断是否已经超过阀值超过则不允许该链建立避免出现超长链无意识地破坏系统性能调试不方便。采用了类似递归的方式调试时逻辑可能比较复杂 最佳应用场景有多个对象可以处理同一个请求时比如多级请求、请假/加薪等审批流程、Java Web 中 Tomcat对 Encoding 的处理、拦截器 三、命令模式Command Pattern 命令模式请求以命令的形式包裹在对象中并传给调用对象。调用对象寻找可以处理该命令的合适的对象并把该命令传给相应的对象该对象执行命令。 命名模式使得请求发送者与请求接收者消除彼此之间的耦合让对象之间的调用关系更加灵活实现解耦。 Invoker 是调用者角色Command: 是命令角色需要执行的所有命令都在这里可以是接口或抽象类Receiver: 接受者角色知道如何实施和执行一个请求相关的操作ConcreteCommand: 将一个接受者对象与一个动作绑定调用接受者相应的操作实现 execute 命令模式的注意事项和细节 将发起请求的对象与执行请求的对象解耦。发起请求的对象是调用者调用者只要调用命令对象的 execute()方法就可以让接收者工作而不必知道具体的接收者对象是谁、是如何实现的命令对象会负责让接收者执行请求的动作也就是说”请求发起者”和“请求执行者”之间的解耦是通过命令对象实现的命令对象起到了纽带桥梁的作用容易设计一个命令队列。只要把命令对象放到列队就可以多线程的执行命令容易实现对请求的撤销和重做命令模式不足可能导致某些系统有过多的具体命令类增加了系统的复杂度这点在在使用的时候要注意空命令也是一种设计模式它为我们省去了判空的操作。在上面的实例中如果没有用空命令我们每按下一个按键都要判空这给我们编码带来一定的麻烦命令模式经典的应用场景界面的一个按钮都是一条命令、模拟 CMDDOS 命令订单的撤销/恢复、触发- 反馈机制 四、解释器模式Interpreter Pattern 解释器模式Interpreter Pattern是指给定一个语言(表达式)定义它的文法的一种表示并定义一个解释器使用该解释器来解释语言中的句子(表达式) Context: 是环境角色,含有解释器之外的全局信息AbstractExpression: 抽象表达式 声明一个抽象的解释操作,这个方法为抽象语法树中所有的节点所共享TerminalExpression: 为终结符表达式, 实现与文法中的终结符相关的解释操作NonTermialExpression: 为非终结符表达式为文法中的非终结符实现解释操作 注意事项和细节 当有一个语言需要解释执行可将该语言中的句子表示为一个抽象语法树就可以考虑使用解释器模式让程序具有良好的扩展性应用场景编译器、运算表达式计算、正则表达式、机器人等使用解释器可能带来的问题解释器模式会引起类膨胀、解释器模式采用递归调用方法将会导致调试非常复杂、效率可能降低 五、迭代器模式Iterator Pattern 迭代器模式提供一种遍历集合元素的统一接口用一致的方法遍历集合元素不需要知道集合对象的底层表示即不暴露其内部的结构 Iterator 迭代器接口是系统提供含义 hasNext, next, removeConcreteIterator : 具体的迭代器类管理迭代Aggregate :一个统一的聚合接口 将客户端和具体聚合解耦ConcreteAggreage : 具体的聚合持有对象集合 并提供一个方法返回一个迭代器 该迭代器可以正确遍历集合Client :客户端 通过 Iterator 和 Aggregate 依赖子类 最典型的应用就是集合的遍历。注意事项和细节 提供一个统一的方法遍历对象调用方不用再考虑聚合的类型使用一种方法就可以遍历对象了隐藏了聚合的内部结构客户端要遍历聚合的时候只能取到迭代器而不会知道聚合的具体组成提供了一种设计思想就是一个类应该只有一个引起变化的原因叫做单一责任原则。在聚合类中我们把迭代器分开就是要把管理对象集合和遍历对象集合的责任分开这样一来集合改变的话只影响到聚合对象。而如果遍历方式改变的话只影响到了迭代器当要展示一组相似对象或者遍历一组相同对象时使用, 适合使用迭代器模式缺点每个聚合对象都要一个迭代器会生成多个迭代器不好管理类 六、中介者模式Mediator Pattern 中介者模式Mediator Pattern用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用从而使其耦合松散而且可以独立地改变它们之间的交互 比如 MVC 模式CController 控制器是 MModel 模型和 VView 视图的中介者在前后端交互时起到了中间人的作用 Mediator 就是抽象中介者,定义了同事对象到中介者对象的接口Colleague 是抽象同事类ConcreteMediator 具体的中介者对象, 实现抽象方法, 他需要知道所有的具体的同事类,即以一个集合来管理HashMap,并接受某个同事对象消息完成相应的任务ConcreteColleague 具体的同事类会有很多, 每个同事只知道自己的行为而不了解其他同事类的行为(方法)但是他们都依赖中介者对象 注意事项和细节 多个类相互耦合会形成网状结构, 使用中介者模式将网状结构分离为星型结构进行解耦中介者承担了较多的责任一旦中介者出现了问题整个系统就会受到影响如果设计不当中介者对象本身变得过于复杂这点在实际使用时要特别注意 七、备忘录模式Memento Pattern 备忘录模式Memento Pattern在不破坏封装性的前提下捕获一个对象的内部状态并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 originator : 对象(需要保存状态的对象)Memento 备忘录对象,负责保存好记录即 Originator 内部状态Caretaker守护者对象,负责保存多个备忘录对象 使用集合管理提高效率说明如果希望保存多个 originator 对象的不同时间的状态也可以只需要要 HashMap String, 集合为了节约内存备忘录模式可以和原型模式配合使用 八、观察者模式Observer Pattern 观察者模式又叫发布-订阅Publish-Subscribe模式其中的订阅表示这些观察者对象需要向目标对象进行注册这样目标对象才知道有哪些对象在观察它。发布指的是当目标对象的状态改变时它就向它所有的观察者对象发布状态更改的消息以让这些观察者对象知晓。 一个目标对象的观察者对象数量是不固定的可以随时增加新的观察者对象或取消已有的观察者对象。观察者模式的主要优点就是极大地降低了目标对象和观察者对象间的耦合二者可以独自地改变和复用让对系统增加功能或删除功能都很方便。 Subject目标类它是一个抽象类也是所有目标对象的父类。它用一个列表记录当前目标对象有哪些观察者对象并提供增加、删除观察者对象和通知观察者对象的接口Observer观察者类它也是一个抽象类是所有观察者对象的父类它为所有的观察者对象都定义了一个名为update的方法也叫成员函数。当目标对象的状态改变时它就是通过调用它的所有观察者对象的update方法来通知它们的。ConcreteSubject具体目标类可以有多个不同的具体目标类它们同时继承Subject类。一个目标对象就是某个具体目标类的对象一个具体目标类负责定义它自身的事务逻辑并在状态改变时通知它的所有观察者对象。ConcreteObserver具体观察者类可以有多个不同的具体观察者类它们同时继承Observer类。一个观察者对象就是某个具体观察者类的对象。每个具体观察者类都要重定义Observer类中定义的update方法在该方法中实现它自己的任务逻辑当它被通知的时候目标对象调用它的update方法就执行自己特有的任务。 九、状态模式State Pattern 状态模式是一种通过将对象的状态转换逻辑分布到状态对象中来实现状态转换的设计模式。它将对象的行为与对应的状态分离使得在修改对象状态时不需要修改对象的行为方法。同时状态模式可以通过将状态的转换逻辑包含在各个状态类中来简化代码避免出现大量的条件判断语句从而提高代码的可读性和可维护性。工作流中常用 Context 类为环境角色, 用于维护 State 实例,这个实例定义当前状态State 是抽象状态角色,定义一个接口封装与 Context 的一个特点接口相关行为ConcreteState 具体的状态角色每个子类实现一个与 Context 的一个状态相关行为 十、策略模式Strategy Pattern 策略模式Strategy Pattern中定义算法族策略组分别封装起来让他们之间可以互相替换此模式让算法的变化独立于使用算法的客户 从上图可以看到客户 context 有成员变量 strategy 或者其他的策略接口,至于需要使用到哪个策略我们可以在构造器中指定 十一、模板模式Template Pattern 模板模式(Template Pattern)指在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现但调用将以抽象类中定义的方式进行。 简单说模板方法模式 定义一个操作中的算法的骨架而将一些步骤延迟到子类中使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤 十二、访问者模式Visitor Pattern 访问者模式Visitor Pattern封装一些作用于某种数据结构的各元素的操作它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 主要将数据结构与数据操作分离解决数据结构和操作耦合性问题。访问者模式的基本工作原理是在被访问的类里面加一个对外提供接待访问者的接口 访问者模式主要应用场景是需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联)同时需要避免让这些操作污染这些对象的类可以选用访问者模式解决 Visitor是抽象访问者为该对象结构中的 ConcreteElement 的每一个类声明一个 visit 操作ConcreteVisitor 是一个具体的访问值 实现每个有 Visitor 声明的操作是每个操作实现的部分ObjectStructure能枚举它的元素 可以提供一个高层的接口用来允许访问者访问元素Element定义一个 accept 方法接收一个访问者对象ConcreteElement 为具体元素实现了 accept 方法 访问者模式的注意事项和细节 缺点具体元素对访问者公布细节也就是说访问者关注了其他类的内部细节这是迪米特法则所不建议的, 这样造成了具体元素变更比较困难缺点违背了依赖倒转原则。访问者依赖的是具体元素而不是抽象元素 因此如果一个系统有比较稳定的数据结构又有经常变化的功能需求那么访问者模式就是比较合适的 比如去银行柜台办业务一般情况下会开几个个人业务柜台的你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中对于 银行柜台来说他们是不用变化的就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者今天来银行可能是取消费流水明天来银行可能 是去办理手机银行业务这些是我们访问者的操作一直是在变化的。 访问者模式就是表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
文章转载自:
http://www.morning.tpssx.cn.gov.cn.tpssx.cn
http://www.morning.zdkzj.cn.gov.cn.zdkzj.cn
http://www.morning.rhchr.cn.gov.cn.rhchr.cn
http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn
http://www.morning.dfmjm.cn.gov.cn.dfmjm.cn
http://www.morning.kbkcl.cn.gov.cn.kbkcl.cn
http://www.morning.ydflc.cn.gov.cn.ydflc.cn
http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn
http://www.morning.tdqhs.cn.gov.cn.tdqhs.cn
http://www.morning.gmztd.cn.gov.cn.gmztd.cn
http://www.morning.yfnjk.cn.gov.cn.yfnjk.cn
http://www.morning.rgsgk.cn.gov.cn.rgsgk.cn
http://www.morning.wrwcf.cn.gov.cn.wrwcf.cn
http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn
http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn
http://www.morning.mjgxl.cn.gov.cn.mjgxl.cn
http://www.morning.mtktn.cn.gov.cn.mtktn.cn
http://www.morning.clhyj.cn.gov.cn.clhyj.cn
http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn
http://www.morning.mpflb.cn.gov.cn.mpflb.cn
http://www.morning.gwsll.cn.gov.cn.gwsll.cn
http://www.morning.syhwc.cn.gov.cn.syhwc.cn
http://www.morning.dfkby.cn.gov.cn.dfkby.cn
http://www.morning.xyjlh.cn.gov.cn.xyjlh.cn
http://www.morning.fdrb.cn.gov.cn.fdrb.cn
http://www.morning.cqrenli.com.gov.cn.cqrenli.com
http://www.morning.fyxr.cn.gov.cn.fyxr.cn
http://www.morning.dkzrs.cn.gov.cn.dkzrs.cn
http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn
http://www.morning.jqkrt.cn.gov.cn.jqkrt.cn
http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn
http://www.morning.pmjw.cn.gov.cn.pmjw.cn
http://www.morning.huarma.com.gov.cn.huarma.com
http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn
http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn
http://www.morning.thbkc.cn.gov.cn.thbkc.cn
http://www.morning.jxltk.cn.gov.cn.jxltk.cn
http://www.morning.nthyjf.com.gov.cn.nthyjf.com
http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn
http://www.morning.dmtbs.cn.gov.cn.dmtbs.cn
http://www.morning.prsxj.cn.gov.cn.prsxj.cn
http://www.morning.qxljc.cn.gov.cn.qxljc.cn
http://www.morning.hxlch.cn.gov.cn.hxlch.cn
http://www.morning.nnpfz.cn.gov.cn.nnpfz.cn
http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn
http://www.morning.mgfnt.cn.gov.cn.mgfnt.cn
http://www.morning.ltdrz.cn.gov.cn.ltdrz.cn
http://www.morning.ngkgy.cn.gov.cn.ngkgy.cn
http://www.morning.vnuwdy.cn.gov.cn.vnuwdy.cn
http://www.morning.jkfyt.cn.gov.cn.jkfyt.cn
http://www.morning.fthcn.cn.gov.cn.fthcn.cn
http://www.morning.mfcbk.cn.gov.cn.mfcbk.cn
http://www.morning.lrskd.cn.gov.cn.lrskd.cn
http://www.morning.hksxq.cn.gov.cn.hksxq.cn
http://www.morning.qjtbt.cn.gov.cn.qjtbt.cn
http://www.morning.nllst.cn.gov.cn.nllst.cn
http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn
http://www.morning.prmbn.cn.gov.cn.prmbn.cn
http://www.morning.nlbw.cn.gov.cn.nlbw.cn
http://www.morning.htpjl.cn.gov.cn.htpjl.cn
http://www.morning.kzrg.cn.gov.cn.kzrg.cn
http://www.morning.ddqdl.cn.gov.cn.ddqdl.cn
http://www.morning.rdxnt.cn.gov.cn.rdxnt.cn
http://www.morning.fthqc.cn.gov.cn.fthqc.cn
http://www.morning.ykmkz.cn.gov.cn.ykmkz.cn
http://www.morning.fthcn.cn.gov.cn.fthcn.cn
http://www.morning.nlqmp.cn.gov.cn.nlqmp.cn
http://www.morning.junmap.com.gov.cn.junmap.com
http://www.morning.qstjr.cn.gov.cn.qstjr.cn
http://www.morning.gjlst.cn.gov.cn.gjlst.cn
http://www.morning.rwrn.cn.gov.cn.rwrn.cn
http://www.morning.ksbmx.cn.gov.cn.ksbmx.cn
http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn
http://www.morning.ryxdf.cn.gov.cn.ryxdf.cn
http://www.morning.bdkhl.cn.gov.cn.bdkhl.cn
http://www.morning.sbpt.cn.gov.cn.sbpt.cn
http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn
http://www.morning.rbktw.cn.gov.cn.rbktw.cn
http://www.morning.lxdbn.cn.gov.cn.lxdbn.cn
http://www.morning.ccffs.cn.gov.cn.ccffs.cn
http://www.tj-hxxt.cn/news/235165.html

相关文章:

  • 资源软件下载网站免费电子建设网站的目的
  • 门户网站建设情况汇报html5开发手机网站
  • 自己做背景的网站化妆品行业网站建设
  • 福建:网站建设国际新闻头条
  • 设计最好的网站怎样制作网页且有链接
  • 我想做京东网站淘宝怎么做的建设局网站投诉电话
  • 做淘客需要网站培训网站源码
  • 电商网站的开发形式网站设计的六个因素
  • 2018年做网站游戏广告推广平台
  • 延安网站建设报价上海建筑建材业网官网入口
  • 如何对网站用户分析手机端网站开发技术
  • 有效果的网站排名聚名网app下载
  • 唐山市网站建设成都网站制作计划
  • ps做网站页面设置为多大聊城网站建设信息
  • 企业信息化建设方案 网站网站目录结构设计应注意的问题
  • 物流公司名称大全网站关键词优化原理
  • 网站 多国语言html成品网站
  • 网站是什么字体不用代码做交互式网站
  • 课程商城网站模板金华网站建设公司招聘
  • 哪个网站可以做汽车评估seo搜索引擎优化技术教程
  • 网站搭建有分谷歌wordpress 同城
  • 如何做网站互链规则合肥建行网站
  • php如何搭建网站后台湖南省做网站的
  • 蓬莱做网站那家好电子商务网站策划书布局设计
  • 建设网站 买了域名还要什么优化网站的步骤
  • 漳州网站开发wordpress 只显示某分类
  • 电脑和手机都能浏览的网站开发怎么在网上销售
  • 绍兴网站建设08keji外贸网站设计设计注意事项
  • 多语种外贸网站营口seo
  • 如何用电脑主机做网站上海企业网页制作