美文网首页
GoF - 行为模式

GoF - 行为模式

作者: _Walker__ | 来源:发表于2021-11-24 00:25 被阅读0次

    责任链模式(Chain Of Responsiblity)

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

    对象结构

    责任链中,从第一个对象开始,链中收到请求的对象要买自己处理它,要么转发给链中的下一个对象。

    • 责任链是在运行时动态建立的,因此灵活性较强
    • 责任链并不保证每个请求都能被处理
    • 在责任链中,最多只有一个对象负责处理请求

    中介者模式(Mediator)

    用一个中间对象封装一系列的对象交互。
    中介者使各对象不需要显示的相互引用,从而使其低耦合,而且可以独立的改变它们之间的交互。

    应用场景

    • 一组对象饴定义良好但是复杂的方式进行通信。产生的相互依赖关系混乱且难以理解
    • 一个对象引用了很多其他对象,并且直接与这些对象通信,导致难以复用该对象
    • 想定制一个分布在多个类中的行为,而又不想生成太多的子类

    特点

    • 减少子类生成,Mediator使得Colleague类可以被复用,减少了Colleague创建子类拓展业务的可能
    • 控制集中化,Mediator将对象交互的复杂性,变为中介者的复杂性。这可能导致中介者本身成为一个难以维护的对象。
    • Mediator与MVC中的C有着相同的职责

    备忘录模式(Memento)

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

    应用场景

    • 必须保存对象在某一时刻的状态,以便后面将其恢复到原先的状态
    • 用接口让其他对象获得自身状态,会暴露对象的实现细节并破坏封装性

    特点

    • Memento的合理实现,很依赖语言的特性支持。Memento中状态的存取只应对原类对象完全开放,其他类不应获得访问权限。C++的友元、C#的内部类都提供了有效的支持。

    访问者模式(Visitor)

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

    应用场景

    • 对象结构很少改变,但经常需要在此结构上增加新的操作
    • 需要对一个对象结构的成员对象,进行很多不同且不相关操作(这里不相关是指多个操作间不相关,但每个成员对象都有相同的操作),又不想这些操作污染成员对象的类。Visitor将每一组相关的操作集中放在一个类中。

    特点

    • 一个具体的Visitor类,定义一个操作
    • 每个Element都要知道Visitor的存在(但只需要简单的执行Visitor的Visit方法)。这一特点意味着, 在最初没有给Visitor预留接口的设计中,不适合用Visitor来拓展操作。

    相关文章

      网友评论

          本文标题:GoF - 行为模式

          本文链接:https://www.haomeiwen.com/subject/ezqitrtx.html