`

行为模式

阅读更多

行为模式涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻划了在运行时难以跟踪的复杂的控制流。它们将你的注意力从控制流转移到对象间的联系方式上来。

 

行为类模式使用继承机制在类间分配行为。模板方法是一个算法的抽象定义,它逐步地定义该算法,每一步调用一个抽象操作或一个原语操作,子类定义抽象操作以具体实现该算法。另一种行为类模式是Interpreter模式。它将一个文法表示为一个类层次,并实现一个解释器作为这些类的实例上的一个操作。

 

行为对象模式使用对象复合而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任一个对象都无法单独完成的任务。

Mediator模式在对等对象间引入一个mediator对象以避免这种情况的出现。mediator提供了松耦合所需的间接性。

Chain of Responsibility模式提供了更松的耦合。它让你通过一条候选对象链隐式的向一个对象发送请求。根据运行时刻情况任意候选者都可以响应相应的请求。候选者的数目是任意的,你可以在运行时刻决定哪些候选者参与到链中。

Observer模式定义并保持对象间的依赖关系。

其他的行为对象模式常将行为封装在一个对象中并将请求指派给它。Strategy模式将算法封装在对象中,这样可以方便地指定和改变一个对象所使用的算法。Command模式将请求封装在对象中,这样它就可作为参数来传递,也可以被存储在历史列表里,或者以其他方式使用。State模式封装一个对象的状态,使得当这个对象的状态对象变化时,该对象可改变它的行为。Visitor模式封装分布于多个类之间的行为,而Iterator模式则抽象了访问和遍历一个集合中的对象的方式。

 

封装变化是很多行为模式的主题。当一个程序的某个方面的特征经常发生改变时,这些模式就定义一个封装这个方面的对象。这样当该程序的其他部分依赖于这个方面时,它们都可以与此对象协作。这些模式通常定义一个抽象类来描述这些封装变化的对象,并且通常该模式依据这个对象来命名。

这些模式描述了程序中很可能会改变的方面。大多数模式有两种对象:封装该方面特征的新对象,和使用这些新的对象的已有对象。如果不使用这些模式的话,通常这些新对象的功能就会变成这些已有对象的难以分割的一部分。

但不是所有的对象行为模式都像这样分割功能。例如,Chain Of Responsibility可以处理任意数目的对象(即一个链),而所有这些对象可能已经存在于系统中了。

职责链说明了行为模式间的另一个不同点:并非所有的行为模式都定义类之间的静态通信关系。职责链提供在数目可变的对象间进行通信的机制。其他模式涉及到一些作为参数传递的对象。

 

Mediator和Observer是相互竞争的模式。它们之间的差别是,Observer通过引入Observer和Subject对象来分布通信,而Mediator对象则封装了其他对象间的通信。

在Observer模式中,不存在封装一个约束的单个对象,而必须是由Observer和Subject对象相互协作来维护这个约束。通信模式由观察者和目标连接的方式决定:一个目标通常有多个观察者,并且有时一个目标的观察者也是另一个观察者的目标。Mediator模式的目的是集中而不是分布。它将维护一个约束的职责直接放在一个中介者中。

 

当合作的对象直接互相引用时,它们变得互相依赖,这可能会对一个系统的分层和重用性产生负面影响。命令、观察者、中介者,和职责链等模式都涉及如何对发送者和接收者解耦,但它们又各有不同的权衡考虑。

 

命令模式使用一个Command对象来定义一个发送者和一个接收者指间的绑定关系,从而支持解耦。

Command对提供了一个提交请求的简单接口(即Execute操作)。将发送者和接收者之间的连接定义在一个单独的对象使得该发送者可以与不同的接收者一起工作。这就将发送者与接收者解耦,使发送者更易于复用。此外,可以复用Command对象,用不同的发送者参数化一个接收者。虽然Command模式描述了避免使用生成子类的实现技术,名义上每一个发送者-接收者连接都需要一个子类。

 

观察者模式通过定义一个接口来通知目标中发生的改变,从而将发送者(目标)与接收者(观察者)解耦。Observer定义了一个比Command更松的发送者-接收者绑定,因为一个目标可能有多个观察者,并且其数目可以在运行时变化。

观察者模式中的Subject和Observer接口是为了处理Subject的变化而设计的,因此当对象间有数据依赖时,最好用观察者模式来对它们进行解耦。

 

中介者模式让对象通过一个Mediator对象间接的互相引用,从而对它们解耦。

一个Mediator对象为各Colleague对象间的请求提供路由并集中它们的通信。因此各Colleague对象仅能通过Mediator接口相互交谈。因为这个接口是固定的,为增加灵活性,Mediator可能不得不实现它自己的分发策略。可以用一定方式对请求编码并打包参数,使得Colleague对象可以请求的操作数目不限。

中介者模式可以减少一个系统中的子类生成,因为它将通信行为集中到一个类中,而不是将其分布在各个子类中。然而,特别的分发策略通常会降低类型安全性。

 

最后,职责链模式通过沿一个潜在接收者链传递请求而将发送者与接收者解耦。

因为发送者和接收者之间的接口是固定的,职责链可能也需要一个定制的分发策略。因此它与Mediator模式一样存在类型安全的问题。如果职责链已经是系统结构的一部分,同时在链上的多个对象中总有一个可以处理请求,那么职责链将是一个很好的将发送者和接收者解耦的方法。此外,因为链可以被简单的改变和扩展,从而该模式提供了更大的灵活性。

分享到:
评论

相关推荐

    JAVA设计模式之行为模式

    这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...

    设计模式_行为模式

    在这个“设计模式_行为模式”主题中,我们将深入探讨几种关键的行为模式。 1. 责任链模式(Chain of Responsibility):此模式允许创建一个处理请求的对象链,每个对象都可以处理请求或将其传递给链中的下一个对象...

    软件设计模式之行为模式

    本篇文章将详细探讨行为模式,尤其是作为“行为模式之一”的概念,以及它如何影响和优化软件设计。 行为模式主要关注对象之间的责任分配和交互。这些模式可以帮助我们更好地理解和设计系统的动态行为,使代码更加...

    JAVA设计模式(创建模式 结构模式 行为模式)

    本资源主要涵盖了创建模式、结构模式和行为模式三大类,每种模式都是面向对象设计的核心部分。 创建模式主要用于解决对象的创建问题,使得对象的创建过程更加灵活,易于扩展。其中: 1. 工厂模式(Factory Pattern...

    设计模式之行为模式 23种模式中的几种

    "设计模式之行为模式 23种模式中的几种" 行为模式是设计模式的一种,涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻划了在运行时难以跟踪的复杂的控制流。...

    项目百态_深入理解软件项目行为模式

    《项目百态:深入理解软件项目行为模式》是第19届Jolt大奖的获奖作品,这本著作在IT行业中具有极高的价值,因为它深入探讨了软件开发项目的各种动态和模式,帮助项目经理、团队成员以及相关从业者更好地理解和应对...

    Java与模式 (清晰书签版) 创建模式、 行为模式、 结构模式 模式 清晰

    Java与模式 (清晰书签版) 创建模式、 行为模式、 结构模式 模式 清晰

    设计模式之行为模式二

    本资源是用VC6.0实现的行为模式,有三种:ChainOfResponsibilityPattern、InterpreterPattern、IteratorPattern,参考与《23种设计模式(C++).pdf》

    移动互联网背景下儿童教育APP行为模式研究——以儿童类应用“我是谁”的创意设计为例.pdf

    "移动互联网背景下儿童教育APP行为模式研究——以儿童类应用“我是谁”的创意设计为例" 本文将通过研究儿童类应用“我是谁”的设计过程,探索移动互联网背景下儿童教育APP行为模式,並对儿童行为模式的多个角度进行...

    设计模式之行为模式(一)

    本资源是用VC6.0实现的行为模式,有八种:CommandPattern、MediatorPattern、MementoPattern、ObserverPattern、StatePattern、StrategyPattern、TemplatePattern、VisitorPattern。参考于《23种设计模式(C++).pdf》

    角色分离下的消费者行为模式与信息反馈断路现象研究

    传统上,消费者行为模式主要聚焦于购买者与使用者角色合一的情况,但随着市场的变化与发展,购买者和使用者角色分离的情形变得日益普遍,如礼品市场及家庭内购买与使用不同人的情况。 在孙洪杰的论文中,作者指出,...

    出租车乘客司机的行为模式研究.caj

    出租车乘客司机的行为模式研究.caj 出租车乘客司机的行为模式研究.caj 出租车乘客司机的行为模式研究.caj 出租车乘客司机的行为模式研究.caj 出租车乘客司机的行为模式研究.caj 出租车乘客司机的行为模式研究.caj ...

    基于行为模式的计算机安全策略研究

    文章的目的就是研究病毒的行为模式,通过行为防范为主,把病毒库变成行为库,利用行为模式来实施控制,最终实现信息安全,通过行为模式进行方法能够有效的减少软硬件的升级工作,根据对行为模式的实时跟踪,逐步设定安全...

    从信息泄露视角看待密码应用_密码应用与访问行为模式保护.pdf

    加密是保护隐私泄露的根本办法,很多满足应用需求的密码机制也已经不断被提出。但是虽然密码算法本身具有可证明安全性,但是在应用中产生的... ... 如何保护访问行为模式 基本思路就是茫然读、茫然写,隐藏块的访问模式

    对跨境电商消费者行为模式及营销策略的探讨.pdf

    在跨境电商消费者行为模式方面,可以概括为购前影响、信息搜寻筛选、购买行为和购后评价四个阶段。在购前影响阶段,消费者基于移动通讯技术、数字多媒体技术、信息交互技术以及位置服务技术的快速发展,产生基于位置...

    设计模式-行为模式.pdf

    ### 设计模式之行为模式详解 #### 一、行为模式概览 行为模式是一类设计模式,关注于算法和对象间职责的分配。这类模式不仅仅描述了对象或类的结构,更重要的是描述了它们之间的通信模式,即如何通过对象间的交互...

    设计模式原理与应用之行为模式.pptx

    设计模式原理与应用之行为模式 设计模式是软件设计中的一种解决方案,旨在解决软件设计中的一些常见问题。行为模式是设计模式的一种,旨在解决对象之间的交互问题。本文将对行为模式的原理和应用进行详细的介绍,...

Global site tag (gtag.js) - Google Analytics