首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Vincent-yuan

    设计模式~行为模式

    行为模式(Behavioral Pattern)是对不同的对象之间划分责任和算法的抽象化。 行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。 行为模式分为类的行为模式和对象的行为模式: 类的行为模式: 类的行为模式使用继承关系在几个类之间分配行为。 对象的行为模式:对象的行为模式则使用对象的聚合来分配行为。 后面将介绍的行为模式包括: 不变模式、策略模式、模板方法模式、观察者模式、迭代函数模式、责任链模式、 命令模式、备忘录模式、状态模式、访问者模式、解释器模式、调停者模式等。

    71470发布于 2020-08-28
  • 来自专栏LieBrother

    行为模式:策略模式

    十一大行为模式之五:策略模式。 上面代码就是完整的策略模式示例,是不是感觉有些问题,这 4 种洗衣类型对象完全暴露给了用户,这也是策略模式的缺点。 往往策略模式不会单独使用,会和其他设计模式一起使用,比如和简单工厂模式一起使用就可以解决这个对外暴露对象的问题,看下面代码。 https://github.com/1CSH1/DesignPatterns/blob/master/src/com/liebrother/designpatterns/strategy/ 总结 策略模式是一个很好的封装各种复杂处理的设计模式 这其中也是一个见招拆招的问题,设计模式在真正运用中也是这样子的,遇到问题使用恰当的设计模式去解决问题。 参考资料:《大话设计模式》、《设计模式之禅》

    50830发布于 2019-04-02
  • 来自专栏LieBrother

    行为模式:状态模式

    十一大行为模式之八:状态模式。 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 (来自《设计模式之禅》) 你要的故事 现在有好多个人贷款软件,比如:支付宝、360借条(打广告。。。)等等。 看起来有点繁琐,扩展性不高,假设新增了一个状态,那么注册、授信、借款这 3 种行为的代码都要修改。下面通过状态模式来解决这个问题。 我们把状态给抽出来,作为一个接口,因为在每种状态中都可能有注册、授信、借款行为,所以把这 3 个行为作为状态接口的方法,让每个状态子类都实现相应的行为控制。如下代码所示。 而每个状态都有 3 种行为,它们各自对这些行为进行权限控制。

    79230发布于 2019-04-02
  • 来自专栏码的一手好代码

    设计模式---行为模式

    设计模式中的行为模式 结构型模式 行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。 行为模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。 通过行为模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象 之间的交互。 行为模式分为类行为模式和对象行为模式两种: 类行为模式:类的行为模式使用继承关系在几个类之间分配行为,类行为模式主要通过多态等方式来分配父类与子类的职责。 对象行为模式:对象的行为模式则使用对象的聚合关联关系来分配行为,对象行为模式主要是通过对象关联等方式来分配两个或多个类的职责。 根据“合成复用原则”,系统中要尽量使用关联关系来取代继承关系,因此大部分行为型设计模式都属于对象行为型设计模式

    77610发布于 2019-12-31
  • 来自专栏LieBrother

    行为模式:命令模式

    十一大行为模式之三:命令模式。 (来自《设计模式之禅》) 你要的故事 作为一个程序猿,我们每天都在经历着命令模式,技术经理把需求任务分配给工程师开发,有时因为第三方或者其他不可抗拒的因素导致需求停止开发。这种工作模式就是命令模式。 非命令模式 非命令模式也就是不使用命令模式的代码实现。 ,让调用者和接受者没有任何关系,也通过对行为的抽象,让新增其他行为变得清晰容易,也就是可扩展性大大增加。 这就是命令模式给我们带来的优点。 参考资料:《大话设计模式》、《设计模式之禅》

    49210发布于 2019-04-02
  • 来自专栏mySoul

    设计模式-行为模式-命令模式

    设计模式-行为模式-命令模式 基础 以一个MIS系统为栗子 MIS 管理信息系统(Management Information System,MIS)是一个以人为主导的,利用计算机硬件、软件和网络设备

    77020发布于 2018-12-06
  • 来自专栏進无尽的文章

    设计模式| 行为模式 (下)

    前言 行为模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、解释器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式。 设计模式| 行为模式 (上) 设计模式| 行为模式 (下) 欢迎阅读,评论!!! 它是一种对象行为模式,其别名为Token。 访问者模式是一种对象行为模式。 中介者模式又称为调停者模式,它是一种对象行为模式

    64820发布于 2018-09-12
  • 来自专栏LieBrother

    行为模式:责任链模式

    十一大行为模式之四:责任链模式。 (来自《设计模式之禅》) 你要的故事 快要金三银四了,很多同学蠢蠢欲动想要去外面看看世界,而大家有没有提前了解各大企业的面试流程呢? 为什么说这个场景符合责任链模式呢? 这整个过程就构成了责任链模式代码示例,希望在金三银四各位蠢蠢欲动的朋友们都能闯到最后一关拿下 HR 姐姐。 Filter 过滤器里面就是用责任链模式来实现的。上面代码还用到了另一个模式,不明确指出来了,考验大家学习这些设计模式的效果,知道的同学可以留言说一下。 参考资料:《大话设计模式》、《设计模式之禅》

    48530发布于 2019-04-02
  • 来自专栏运维开发王义杰

    设计模式分类:行为模式

    行为模式 行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。 根据其意图或目的,行为模式可以分为两大类: 类行为模式(Class Behavioral Pattern):类的行为模式使用继承关系在几个类之间分配行为,类行为模式主要通过多态等方式来分配父类与子类的职责 对象行为模式(Object Behavioral Pattern):对象的行为模式则使用对象的聚合关联关系来分配行为,对象行为模式主要是通过对象关联等方式来分配两个或多个类的职责。 根据“合成复用原则”,系统中要尽量使用关联关系来取代继承关系,因此大部分行为型设计模式都属于对象行为型设计模式。 下面我们来看看每一类中包含哪些具体的设计模式,并举一些简单的例子来说明它们的作用。 对象行为模式 对象行为模式包括以下九种: 策略模式(Strategy Pattern):定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

    48320编辑于 2023-08-10
  • 来自专栏个人开发

    行为型设计模式:模板模式

    模板模式是常用的一种行为型设计模式,主要思想是在模板中定义一套流程骨架代码,并且不实现骨架代码中使用的一些方法,这些方法留给子类去实现。 args){ AbstractReportTemplate aReport = new AReport(); aReport.doTask(); } 可见,模板模式实现起来非常简单 下面我介绍几个源码中的模板模式

    50810发布于 2020-08-20
  • 来自专栏LieBrother

    行为模式:迭代器模式

    十一大行为模式之六:迭代器模式。 今天讲的迭代器模式,我们就拿听歌这件事来说说,大家都知道听歌有几种模式:单曲循环、列表循环、随机等等。。。现在网易云音乐还多了一个心动模式。 既然说到迭代器模式,那这里就要着重讲讲列表循环这个听歌模式,其他的就先抛到脑后。在列表循环中,歌曲从第一条播放到最后一条,也就是一个遍历歌单的过程。 ,有不少开发同学知道迭代器,但是不知道它是设计模式。 好了,迭代器模式就讲到这,大家知道的知识就不多说啦。 参考资料:《大话设计模式》、《设计模式之禅》

    49650发布于 2019-04-02
  • 来自专栏个人开发

    行为型设计模式:策略模式

    策略模式是让策略的实现与策略的使用解耦,在我们日常的开发中,经常用来重构和优化if-else和switch语句。 当然,策略模式并不是为了取代if-else和switch语句而生的,这里好多人有一个误区,它的思想是接口的一组实现可以相互替换,让使用和实现解耦。 getClass()); public void doStrategy() { logger.info("doStrategy StrategyB"); } } 有状态的策略模式使用 return new StrategyB(); }else{ return null; } } } 无状态的策略模式使用

    55620发布于 2020-08-20
  • 来自专栏gfu

    行为模式-观察者模式

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为模式。 需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制。 注意事项: JAVA 中已经有了对观察者模式的支持类。 避免循环引用。

    70710发布于 2019-08-28
  • 来自专栏進无尽的文章

    设计模式| 行为模式 (上)

    前言 行为模式共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、解释器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式。 其他同系列的文章还有: 面向对象编程中的六大原则 设计模式| 创建型模式 设计模式| 结构型模式 设计模式| 行为模式 (上) 设计模式| 行为模式 (下) 欢迎阅读,评论!!! B.有几种相似的行为,或者说算法,客户端需要动态地决定使用哪一种,那么可以使用策略模式,将这些算法封装起来供客户端调用。 观察者模式是一种对象行为模式。 职责链模式是一种对象行为模式

    82020发布于 2018-09-12
  • 来自专栏迈向架构师

    设计模式 | 行为型 | 状态模式

    状态模式(State) 状态模式(State) 介绍 状态模式是一种行为设计模式 状态模式能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。 适用场景 对象需要根据当前状态进行不同行为,同时状态的数量非常多且与状态相关的代码会频繁变更。 某个类需要根据成员变量的当前值改变自身行为,从而需要使用大量的条件语句。 缺点: 复杂度增加:如果状态机只有很少的几个状态,使用状态模式会很复杂。 与其他模式的关系 状态可被视为策略的扩展 策略模式中的策略则几乎完全不知道其他策略的存在。 状态模式中,特定状态知道其他所有状态的存在,且能触发从一个状态到另一个状态的转换。 实现方式 声明状态接口。 为每个实际状态创建一个继承状态接口的类。 如果状态类中不包含成员变量,则可以使用单例模式来配合使用。 其他实现方法: 分支逻辑法:直接利用 if 逻辑或者 switch 分支逻辑,直接写状态转移的代码。适合简单直接的状态机。

    48610编辑于 2023-02-25
  • 来自专栏孟君的编程札记

    漫谈模式行为模式小结

    时间很快,不知不觉漫谈模式系列已经将设计模式-行为型篇写完。本文主要来简单回顾一下之前写的一些内容。迭代器器模式介绍意图提供一种方法顺序访问一个聚合对象中各个元素,而不是暴露该对象的内部表示。 中介者在各同事间适当地转发请求以实现写作行为。详见:漫谈模式之中介者模式状态模式的基本介绍意图允许一个对象在其内部状态改变的时候改变它的行为。对象看起来似乎修改了它的类。 详见:漫谈模式之模版方法模式访问者模式的基本介绍意图访问者模式是对象的行为模式,其表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 策略模式 vs 解释器模式策略模式的目的是在运行时根据需要选择不同的算法或行为,而解释器模式的目的是根据特定语言的规则解释和执行语句。 策略模式状态模式将一群行为封装到状态类中,主类的当前状态在状态集合中游走,随着时间的流逝,主类的行为不断变化,但这对客户端而言完全是透明的,而策略模式需要客户端明确所有策略,以指明一个具体的策略。

    55330编辑于 2023-03-27
  • 来自专栏LieBrother

    行为模式:中介者模式

    十一大行为模式之二:中介者模式。 (来自《设计模式之禅》) 你要的故事 看了这小伙子的名字,大家会很直观的想到那些拿了我们半个月租的租房中介同学。在这不讲讲房租中介同学,以后可没机会了。 这也是中介者模式的优点,减少了不必要的依赖,降低了类间的耦合。 这也是中介者模式的优点,减少了不必要的依赖,降低了类间的耦合。 看看你工作中的代码,想想看有没有哪些对象之间的关系特紧密特混乱,考虑是不是可以通过中介者模式来把依赖关系剥离,让代码更清晰。 参考资料:《大话设计模式》、《设计模式之禅》

    48320发布于 2019-04-02
  • 来自专栏Nicky's blog

    设计模式命令模式(行为型)

    一、模式定义 命令模式(Command Pattern):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分离,两者之间通过命令对象进行沟通,方便将命令对象进行储存、传递、调用、增加与管理。 命令模式别名为动作(Action)模式或事务(Transaction)模式,属于对象行为模式。 二、模式角色 命令模式包括如下角色: Client:客户类,负责调用 Command:抽象命令类,声明执行命令的接口,拥有执行命令的抽象方法 execute()。 三、模式分析 命令模式的本质:是对命令进行封装,将发出命令的责任和执行命令的责任分离。 命令模式的实际执行者是接收者(Receiver),调用者和接收者两者之间通过命令对象进行沟通。 显然,电视机遥控器就是一个典型的命令模式应用实例。

    56510发布于 2019-04-22
  • 来自专栏每日一Java,进步一点点

    设计模式——行为型设计模式

    行为型设计模式 针对对象之间的交互 解释器模式 java中用的很。 该模式在源码中大量的被应用。 System.out.println("1 >> 先挂号"); System.out.println("2 >> 等待叫号"); //由于现在不知道该开什么处方,所以只能先定义一下行为 命令模式,此时会有三个顶层行为:遥控器、命令、接收器。 根据不同的状态执行不同的行为 水在不同的温度状态会随之改变,程序也可以达到某种状态后就执行不同的行为 //枚举状态 public enum State { //状态直接使用枚举定义

    74810编辑于 2022-08-18
  • 来自专栏LieBrother

    行为模式:解释器模式

    十一大行为模式之十:解释器模式。 简介 姓名 :解释器模式 英文名 :Interpreter Pattern 价值观 :不懂解释到你懂 个人介绍 : Given a language, define a representation for (来自《设计模式之禅》) 你要的故事 解释器顾名思义就是对 2 个不同的表达方式进行转换,让本来不懂的内容解释成看得懂的。比如翻译官就是解释器,把英文翻译成中文,让我们明白外国人说什么。 利用今天要讲的解释器模式,我们来实现一番。 解释器模式中,会有一个上下文类,这个类用于给解释器传递参数。 解释器模式有比较大的扩展性,就如上面,再加上个建表语句 create table 只需要加一个 CreateTableSQLExpression 就可以轻松实现,不用去改动其他解释器代码。

    47120发布于 2019-04-23
领券