设计模式-对象行为型模式

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

 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

    原文作者:odiulzuotian
    原文地址: https://blog.csdn.net/odiulzuotian/article/details/80009523
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞