`
sunqing0316
  • 浏览: 42100 次
  • 性别: Icon_minigender_2
文章分类
社区版块
存档分类
最新评论

行为型模式

 
阅读更多

行为型模式

观察者(依赖倒转)

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

对象间,尤其是具体对象间,相互知道的越少越好,这样发生改变时才不至于相互影响。对观察者模式来说,目标和观察者不是紧密耦合的,它们可以属于一个系统中的不同抽象层次,目标所知道的仅仅是它有一系列的观察者,每个观察者实现Observer的简单接口,目标是不知道观察者属于哪一个具体类的。这样就可以解除对象间的紧耦合关系。

模板(里氏代换)

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

代码重复是编程中最常见、最糟糕的“坏味道”,如果我们在一个以上的地方看到相同的程序结构,那么可以肯定,设法将它们合而为一,程序会变得更好。完全相同的代码当然存在明显的重复,而微妙的重复会出现在表面不同但是本质相同的结构或处理步骤中,这使得我们一定要小心处理。

继承的一个非常大的好处就是你能免费地从基类获取一些东西,当你继承一个类时,派生类马上就可以获得基类中所有的功能,你还可以在它的基础上任意增加新的功能。

模板方法模式由一个抽象类组成,这个抽象类定义了需要覆盖的可能有不同实现的模板方法,每个从这个抽象类派生的具体类将为此模板实现新方法。这样就使得可重复的代码都提炼到抽象类中了,这就实现了代码的重用。

命令(单一职责)

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

将请求发送者与具体实现者分离,就是将调用操作的对象与知道如何实现该操作的对象解耦。命令模式可以在不同的时刻指定、排列和执行请求。可以在实施操作前将状态存储起来,以便支持取消/重做的操作,还可以记录整个操作的日志,以便以后可以在系统出问题时查找原因或恢复重做。这也意味着命令模式可以支持事物,要么所有的命令全部执行成功,要么恢复到什么也没执行的状态。总之,如果有类似的请求,利用命令模式分离请求者与实现者是最明智的选择。

状态

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

在编程中往往会遇到条件分支大量应用的问题,如果条件分支语句没有涉及重要的商务逻辑或者不会随着时间的变化而变化,也不会有任何的可扩展性,也就是说它几乎不会变化,此时条件分支是应该使用的。但是这里有很多前提,而且这些前提往往都是不成立的,事实上,不会变化的需求很少,不需要扩展的软件也很少,那么如果把这样的分支语句进行分解并封装成多个子类,利用多态来提高其可维护性、可扩展性的需要,是非常重要的。

状态模式提供了一个更好的办法来组织与特定状态相关的代码,决定状态转移的逻辑不在单块的ifswitch中,而是分布在各个状态子类之间,又有所有与状态相关的代码都存在于某个状态子类中,所以通过定义新的子类可以很容易地增加新的状态和转换。

职责链

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

同样是将请求发送者与具体实现者分离。我们时常会碰到这样的情况:有多个对象可以处理一个请求,但是哪个对象处理该请求事先并不知道,要在运行时刻自动确定,此时,最好的办法就是让请求发送者与具体处理这分离,让客户在不明确指定接收者的情况下提交一个请求,然后由所有能处理这一请求的对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。

分享到:
评论

相关推荐

    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