`
arcticfox9902
  • 浏览: 108553 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

行为型模式

 
阅读更多

1、策略模式(Strategy Pattern)

        策略模型定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

 

2、观察者模式(Observer Pattern)

        观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

        Java API有内置的观察者模式,java.util包内包含最基本的Observer接口与Observable类。Observer接口声明了update()方法,Observable类声明了addObserver()、deleteObserver()、notifyObservers()、setChanged()方法,setChanged()方法把changed标志设为true,notifyObservers()只会在changed为true时通知观察者,通知观察者之后,把changed标志设回false。

        Observable是一个类!因此你必须设计一个类继承它,如果想同时具有Observable类和另一个超类的行为,就会陷入两难(Java不支持多继承),这限制了Observer的复用潜力。Observable类的setChanged()方法是protected的,这意味着必须继承自Observable,否则无法使用setChanged()。因此,如果你能够扩展Observable,那么Observable“可能”可以符合你的需求,否则就需要自己实现一整套观察者模式。

 

3、命令模式(Command Pattern)

        命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

 

4、模版方法模式(Template Method Pattern)

        模版方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。

        模版方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

        这个模式是用来创建一个算法的模板。这里的模板就是一个方法,更具体的说,这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。

        钩子是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。当你的子类“必须”提供算法中某个方法或步骤的实现时,就使用抽象方法。如果算法的这个部分是可选的,就用钩子。钩子可以让子类实现算法中可选的部分,或者在钩子对于子类的实现并不重要的时候,子类可以对钩子置之不理;钩子的另一个用法是让子类能够有机会对模版方法中某些即将发生(或刚刚发生)的步骤做出反应。

        抽象方法的数目取决于算法内步骤切割的粒度,如果步骤切割得太细,抽象方法的数目较多,在子类中实现这些方法将会很麻烦,但是如果步骤太少,会比较没有弹性,所以要看情况折中。

 

5、迭代器模式(Iterator Pattern)

        迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

 

6、状态模式(State Pattern)

        状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

        这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,Context对象会随着时间而改变状态,基于内部状态而拥有不同的行为。

 

7、解释器模式(Interpreter Pattern)

        定义语言的文法,并建立一个解释器使用该文法来解释语言中的句子。

        解释器模式由以下部分组成:

1)        抽象表达式角色:声明一个抽象的解释操作,这个接口为所有具体表达式角色(抽象语法树中的节点)都要实现的。

什 么叫做抽象语法树呢?《java与模式》中给的解释为:抽象语法树的每一个节点都代表一个语句,而在每个节点上都可以执行解释方法。这个解释方法的执行就 代表这个语句被解释。由于每一个语句都代表这个语句被解释。由于每一个语句都代表一个常见的问题的实例,因此每一个节点上的解释操作都代表对一个问题实例 的解答。

2)        终结符表达式角色:具体表达式。

a)        实现与文法中的终结符相关联的解释操作

b)        而且句子中的每个终结符需要该类的一个实例与之对应

3)        非终结符表达式角色:具体表达式。

a)        文法中的每条规则R::=R1R2…Rn都需要一个非终结符表带式角色

b)        对于从R1到Rn的每个符号都维护一个抽象表达式角色的实例变量

c)        实现解释操作,解释一般要递归地调用表示从R1到Rn的那些对象的解释操作

4)        上下文(环境)角色:包含解释器之外的一些全局信息。

5)        客户角色:

a)        构建(或者被给定)表示该文法定义的语言中的一个特定的句子的抽象语法树

b)        调用解释操作

 

绿色部分转载自http://solecjj.blogbus.com/logs/21046995.html

 

8、职责链模式(Chain of Responsibility Pattern)

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

 

9、中介者模式(Mediator Pattern)

        用一个中介对象来封装一系列关于对象交互行为。

 

10、访问者模式(Visitor Pattern)

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

        访问者模式适用于数据结构相对稳定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。目地是要把处理从数据结构分离出来。

 

11、备忘录模式(Memento Pattern)

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

分享到:
评论

相关推荐

    12.4.4 设计模式(行为型模式).avi

    12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...

    设计模式3-行为型模式

    其中,行为型模式主要着眼于对象间的交互,以及如何有效地分配和管理职责,使软件设计更加灵活、易于扩展和维护。本文将详细介绍行为型设计模式,并深入分析两种典型的行为模式:职责链模式和命令模式。 首先,让...

    c#设计模式 行为型模式 实验报告+源代码

    c#设计模式 行为型模式 包括8个设计模式的实验报告+源代码。实验报告包括实验类图和个人总结的一些小技巧,源代码。包括:职责链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略...

    C#面向对象设计模式纵横谈\18 行为型模式Iterator迭代器模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不... 这是第18节:行为型模式Iterator迭代器模式

    (行为型模式) Strategy 策略模式

    C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载

    行为型模式+结构型模式+创建型模式:三大设计模式实例剖析与深入解读

    在给定的标题和描述中,我们关注的是三种主要的设计模式类别:行为型模式、结构型模式和创建型模式。下面将分别对这三大类模式进行详细阐述,并通过实例剖析它们的核心概念和应用场景。 **行为型模式**主要关注对象...

    C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在C#编程中,这种模式被广泛应用于处理具有多种状态的对象,使得对象的状态转换更加清晰和易于管理。 状态模式的...

    设计模式-创建型模式、结构型模式和行为型模式

    按照不同的功能特性,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 #### 二、创建型模式 创建型模式主要用于解决对象创建的过程,旨在简化对象创建的复杂度,同时保持对象创建的灵活性。主要...

    c++设计模式-行为型模式-访问者模式

    c++设计模式-行为型模式-访问者模式;qt工程;c++简单源码; 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新...

    JAVA设计模式,常用创建型、结构型、行为型模式介绍和代码示例

    ### JAVA设计模式详解:创建型、结构型、行为型模式介绍及代码示例 #### 一、概述 在软件开发过程中,设计模式提供了一系列解决常见问题的模板,帮助开发者更高效地编写高质量代码。设计模式通常被划分为三种类型...

    L14-设计模式-行为型模式v21

    行为型模式 行为型模式(Behavioral Patterns)是设计模式的一种,关注对象行为功能上的抽象,从而提升对象在行为功能上的可拓展性,能以最少的代码变动完成功能的增减。 在设计模式中,行为型模式主要包括以下几...

    基于Python的行为型模式设计.pdf

    行为型模式是软件设计模式中的一个重要分类,它关注对象之间的通信和控制流程。在设计模式领域,1989年提出的23种设计模式已成为软件开发中的宝贵资源。这些设计模式在不同的编程语言中得到了广泛的应用,而Python...

    c++设计模式-行为型模式-责任链模式

    c++设计模式-行为型模式-责任链模式;qt工程;c++简单源码; 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的...

    设计模式之行为型模式代码.zip

    在软件工程中,设计模式是解决常见编程问题的可重用解决方案。行为型设计模式主要关注对象...在"设计模式之行为型模式代码"这个压缩包中,你将找到这些模式的示例代码,通过学习和实践,可以更好地理解和运用这些模式。

    行为型模式讲义

    GoF的行为型模式讲义

    设计模式之11个行为型模式

    行为型模式(BehavioralPattern)是对在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。在系统运行时,对象并不是孤立的,它们可以通过相互通信与协作...

    基于Python的行为型模式设计.zip

    行为型模式是软件设计模式中的一个重要类别,它们主要关注对象之间的责任分配和交互。在Python编程语言中,我们可以利用这些模式来提高代码的可读性、可维护性和灵活性。本资料"基于Python的行为型模式设计.zip"包含...

    实验5:行为型模式应用实验(2)

    在本实验"实验5:行为型模式应用实验(2)"中,我们将深入探讨软件设计中的行为型模式。这些模式主要关注对象之间的交互和职责分配,以提高代码的灵活性、可读性和可维护性。实验代码是理解这些模式实际应用的关键。...

Global site tag (gtag.js) - Google Analytics