设计模式之行为型模式

       行为型模式描述类或对象如何交互及如何分配职责,它 主要涉及通过合理的处理方法,达到使系统升级性和维护性提高的目的。

行为模式

      
1.职责链模式 Chain of Responsibility

      
2.命令模式 Command

      
3.解释器模式 Interpreter

      
4.迭代器模式 Iterator

      
5.中介者模式 Mediator

      
6.备忘录模式 Memento

      
7.观察者模式 Observer

      
8.状态模式 State

      
9.策略模式 Strategy

      
10.模板方法模式 Template Method

      
11.访问者模式 Visitor  

 

职责链模式 Chain of Responsibility

       职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

      “击鼓传球”游戏就是职责链模式的一种应用,鼓起,球从人手中传递,鼓落,拿球的人要做某件事。

命令模式Command

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

       命令模式是对“行为的请求者”和“行为的实现者”进行了解耦。

       Invoker对象可以在不同的时刻指定、排列、执行操作,支持取消、重做的操作,支持事务,记录操作的日志。 

解释器模式 Interpreter

       解释器模式,给定一个语言,定义它的问法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

       一个特定类型的复杂问题频繁出现,这时我们可以用解释器模式将负责对象表述为一个简单的对象,再进行处理。正则表达式就是一个非常好的例子。 

迭代器模式 Iterator

       迭代器模式提供了一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。当我们需要对聚集有多种方式遍历时,可以考虑用迭代器模式。迭代器模式提供“开始、下一个、是否结束、当前哪一项…”等统一的接口。

       迭代器模式分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露内部结构,又可以让外部代码透明底访问集合内部的数据。松散了耦合性,做到了信息隐蔽。

       比如老师向班长要一个学生花名册,班长可以按学号进行排列,也可以按姓名首字母进行排列,只要包括了全部学生就行了。 

中介者模式 Mediator

       中介者模式用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

       中介者模式,将多个对象之间的多对多的关系转变为了一对一的关系。对象间的相互通信,都需要通过中介者对象来完成,一个对象的增加和移除,不影响其他对象,这样就降低了他们之间的耦合。 

备忘录模式 Memeton

       备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态了。 

观察者模式 Observer

       观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会得到通知,并被自动更新,

        
系统中有两个方面,其中一个方面依赖与另一个方面,我们把这两个方面抽象,是各自可以独立的变化和复用。

        
就像我们现在所用到的分层,不就是一层层的依赖么?还有系统组件升级,系统功能也跟着变化,这也属于观察者模式。

状态模式 State

      
状态模式允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。

      
状态模式就是把系统的多个状态分割开来,分布到State的子类中,消除了庞大的分支语句,减少了耦合,同时也很容易增加新的状态的和转换。

        这就相当于一个Schedule或School Timetable一样,时间的改变,我们的行程或课程也随之改变。

策略模式 Strategy

      
策略模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法的变化不会影响到使用算法的客户。

      
策略模式将每一个算法封装到一个具有公共接口的独立类中,解除了客户与具体算法的直接耦合,是客户改变算法更为容易。

        策略模式+简单工厂+反射+配置文件可以组成更为灵活的方式。 

模版方法模式 Template Method

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

        模版方法就是把不变的行为搬到了超类中,去除了子类中的重复代码。

        多个客户去银行开户,大家都需要填写一个开户表单,表单的格式都是一样的,但是每个人填写的内容却是不同的,客户是需要填写不同的内容即可,而不是把整个表单抄一遍。

访问者模式 Visitor

       访问者模式表示一个作用于某对象结构中的个各原色的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

        
访问者模式适用于数据结构相对稳定的系统。它是将数据结构和作用于结构上的操作分离开来,完成了解耦,可以是操作集合自由演化,但不适合更改数据结构。 

 

 

时间: 2024-10-31 12:13:01

设计模式之行为型模式的相关文章

设计模式之创建型模式

         随着对软件工程研究的不断深入,设计模式也越来越多了,根据其目的准则,划分如下:        1. 创建型:creational 与对象的创建有关.        2. 结构型:Structural 处理类或对象之间的组合.        3. 行为型:behavioral 描述类或对象如何交互及如何分配职责.          创建型模式抽象了实例化的过程,将关于该系统使用的具体的类的信息封装了起来.允许客户用结构和功能差别很大的产品对象配置一个系统.配置可以是静态的,也可以

设计模式1—创建型模式

模式          在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境.          大白话:在一定环境下,用固定套路解决问题. 设计模式(Design pattern) 是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式的分类(Gang o

设计模式3—行为型模式

行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式: 1. 模板方法模式(Template Method Pattern)使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.  2. 命令模式(Command Pattern)是将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 3. 责任链模式(Chain of Responsibility Pattern),在该模式里,很多对象由每一

Java经典设计模式之五大创建型模式(附实例和详解)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.概况 总体来说设计模式分为三大类: (1)创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. (2)结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. (3)行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解

设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

设计模式 ( 十九 ) 模板方法模式Template method(类行为型) 1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序.但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关. 例子1:银行业务办理流程 在银行办理业务时,一般都包含几个基本固定步骤: 取号排队->办理具体业务->对银行工作人员进行评分. 取号取号排队和对银行工作人员进行评分业务逻辑是一样的.但是办理具体业务是个不相同的,具体业务可能

设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述         在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如查找.排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法:当然也可以将这些查找算法封装在一个统一的方法中,通过if-else-或者case等条件判断语

Java经典设计模式之十一种行为型模式(附实例和详解)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] Java经典设计模式共有21中,分为三大类:创建型模式(5种).结构型模式(7种)和行为型模式(11种). 本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:Java经典设计模式之五大创建型模式(附实例和详解). Java经典设计模式之七大结构型模式(附实例和详解). 行为型模式细分为如下11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式

.NET设计模式-创建型模式专题总结(Creational Pattern)

创建型模式专题总结(Creational Pattern) --.NET设计模式系列之七 Terrylee,2006年1月 概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律:第一,它们都将系统使用哪些具体类的信息封装起来:第二,它们隐藏了这些类的实例是如何被创建和组织的.外界对于这些

.NET设计模式(7):创建型模式专题总结(Creational Pattern)

概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律:第一,它们都将系统使用哪些具体类的信息封装起来:第二,它们隐藏了这些类的实例是如何被创建和组织的.外界对于这些对象只知道它们共同的接口,而不清楚其具体的实现细节.正因如此,创建型模式在创建什么(what),由谁(who)来创建,以及何