【对象行为型模式】涉及到算法和对象间职责的分配,描述了对象和类的模式,以及它们之间的通信模式。 用来对类或对象怎样交互和怎样分配职责进行描述

1、  策略模式(strategy)  
        是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
        存在基类策略接口,多个策略继承于基类;上层根据需求执行业务逻辑处理,内部存在策略接口。
PS:
        a:在解决的问题上,状态模式是解决内在状态的改变,而策略模式是解决内部算法的改变。在解决的方法上,状态模式是自我控制状态的改变,而策略模式是由外部制定使用使用啥策略。
b: 简单工厂模式是创建型模式,关注对象的创建。策略模式是行为型模式,关注行为的封装。

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

3、中介者模式(Mediator Pattern)
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
通过中介来实现与所有对象的通信

4、职责链模式(Chain Of Responsibility Pattern)
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。 
总经理->总监->经理->员工

5、 观察者模式(Observer Pattern)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
通知者循环通知所有的观察者,实现状态改变
  
 6、 状态模式(State Pattern)
允许一个对象在其内部状态改变时改变它的行为。
(1)所有状态相关的代码都存在于某个ConcereteState中,所以通过定义新的子类很容易地增加新的状态和转换。
(2)状态模式通过把各种状态转移逻辑分不到State的子类之间,来减少相互间的依赖。
(3)状态模式将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。

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

8、 迭代器模式(Iterator Pattern)
代器模式的精髓:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
a:迭代抽象:访问一个聚合对象的内容而无需暴露它的内部表示。
b:迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。
c:迭代器的健壮性考虑:遍历的同时更改迭代器所在的集合结构,会导致问题。

9、 访问者模式(Visitor Pattern)
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 
抽象访问者(Visitor)角色->具体访问者(ConcreteVisitor)角色(Employee)

抽象节点(Element)角色->具体节点(ConcreteElement)角色(IncomeVisitor   VacationVisitor)                         结构对象(ObiectStructure)角色:有如下的一些责任,可以遍历结构中的所有元素 (Employeeslist)

10、 命令模式(Command Pattern)
将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
根本目的在于将“行为请求者”与“行为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象”。

11、解释器模式(Interpreter Patter)

就是描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。

【参考】https://blog.csdn.net/lcl_data/article/category/1373817

设计模式-对象行为型模式相关推荐

  1. 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)

    设计模式之生成器模式(对象创建型模式) 1.定义/概念 将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以有不同的表示. 2.生成模式角色 Builder: 生成器接口,定义创建一个Produ ...

  2. 设计模式之原型法(ProtoType)----对象创建型模式

    设计模式之原型法(ProtoType)----对象创建型模式 1.意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 2.适用性 1)当要实例化的类是在运行时刻指定时,例如,通过动 ...

  3. 5.8 设计模式之State(状态)—对象行为型模式

    5.8 State(状态)-对象行为型模式 参考文章 意图 状态模式是一种行为设计模式, 改变一个对象的内部状态进而改变其行为. 问题及情景 状态模式与有限状态机的概念紧密相关. 其主要思想是程序在任 ...

  4. Typescript玩转设计模式 之 对象行为型模式(上)

    作者简介 joey 蚂蚁金服·数据体验技术团队 继前面几篇设计模式文章之后,这篇介绍5个对象行为型设计模式. Chain of Responsibility(职责链) 意图 使多个对象都有机会处理请求 ...

  5. 设计模式十八:mediator(中介者模式)——对象行为型模式

    mediator(中介者模式)--对象行为型模式 1.意图 用一个中介对象来封装一系列的对象交互.中介者使不同对象不需要显式地相互引用,从而使其松散耦合,从而使得可以独立地改变他们之间的交互. 2.动 ...

  6. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

  7. java real football_Java学习--设计模式之行为型模式(三)

    一.空对象模式(Null Object Pattern) 1.概念 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查.Null 对象不是检查空值,而是 ...

  8. 设计模式19——行为型模式之备忘录模式

     定义:备忘录模式(MementoPattern),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 类型:对象行为型模式. 概述 ...

  9. Java学习--设计模式之创建型模式

    一.简介 创建型模式:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象.这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活.创建型模式包括:工 ...

最新文章

  1. Windows下文件名或目录的简写
  2. 驻定相位原理(POSP)的简单应用
  3. 网管日志-06.07.25
  4. 太难了!经营12年的明星机构都关停了,却还是有玩家疯狂入局
  5. java编码问题汇总
  6. WCF中使用代理链技术恢复客户端代理层级
  7. NASA-TLX (Task Load Index)量表学习总结
  8. 一周学会linux实战 下载 pdf_UOS可用的pdf编辑工具
  9. 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做
  10. 零基础入门微信小程序开发 (2020 版)
  11. gitlab设置项目组成员权限
  12. 经典面试题 Ipv4 和 Ipv6 是什么
  13. google license key格式不对
  14. Java新特性(一 · JDK1.5)
  15. Linux挖矿病毒查杀
  16. mongoDB操作-持续更新中...
  17. python总结大纲:适合初学者与有经验的人快速查找遗忘的知识点
  18. JAVA SE程序设计及实践
  19. 主攻文推荐攻守都有系统_第一百四十八章:攻守之间 - 足球神话 - 找小说网
  20. 简单的几句PHP生成美团3周年砸金蛋抽奖代码

热门文章

  1. 【FPGA】vivado和modelsim联合仿真
  2. 解压命令linux tgz,linux下解压tgz文件--tar命令详解
  3. 顺序图(Sequence Diagram)
  4. Linux是一个多用户多任务的操作系统
  5. Flutter组件--AppBar相关属性
  6. 嵌入式跨平台UI开发必备组件!Qt系列控件2020年重磅首发,全新升级!
  7. iOS 获取手机的型号,系统版本,软件名称,软件版本
  8. nginx 宝塔 环境部署
  9. sublime-text(格式化JSON数据)
  10. 【Web技术】561- 网站性能优化之度量篇