zoukankan      html  css  js  c++  java
  • 设计模式--行为型设计模式(behavioral)

     1  模板方法(Template Method)

        简单来说就是 一个方法有多个步骤去执行,包括 不变的方法和可变的方法,可变的方法就放到子类里面执行。例子 将某个东西塞冰箱里需要几步(1   2  3  4  )

      2 策略模式(Strategy)

       简单来说就是 面向对象中的多态就可以认为是一种策略模式的使用, 对于同一个接口使用不同的实现类, 有不同的行为。

      实例 :小伙伴出去玩耍, 需要选择一种出行方式(同一个接口), 有自驾出行和公交出行两种策略

     3  观察者模式(Observer)

      简单来说就是 当数据或其他有变化的时候,就通知相关方去对应处理。对象之间的一对多依赖, 让多个观察者对象同时监听某一个主题对象, 当主题对象发生变化时, 它的所有依赖者(观察者)都会收到通知并更新

     

     4 备忘录模式(Memento)

       简单来说就是 保存对象的某个状态,便在适当的时候恢复对象

     

       5 命令模式(Command)

       简单来说就是 请求的调用者和接受者不直接交互,降低耦合  (人和灯没有交互,通过Command去建立关系)

    • Command接口 : 对应模式中Command接口 --执行操作的接口
    • LighetOnCommand, LightOffCommand : 对应模式中ConcreteCommand角色--接收者对象绑定于一个动作,调用接收者相应的操作,以实现Excute
    • Person : 对应模式中Invoker角色--要求该命令执行这个请求
    • Light : 对应模式中Receiver角色--知道如何实施与执行一个请求相关的操作
    • Client : 对应模式中Client角色, 测试代码

     6  中介者模式(Mediator)

       简单来说就是 通过一个中介将很多对象之间的交互关系由直接变为间接,将“网状结构”的交互关系变为“星形结构”的交互关系。比如生活中为了方便交流往往我们都会使用各种群,一个群成员发送了消息所有属于这个群的成员都会收到通知,这样的一个“群”就属于中介者。

      群聊场景, 每个用户将消息发送到群中, 在群中展示, 不具体发送到个人, 类与中介者模式对应关系如下:

    • Mediator接口 : 对应中介者模式中的Mediator(中介者)角色
    • GroupMediator : 对应中介者模式中的ConcreteMediator(具体中介者)角色
    • User : 对应中介者模式中的Colleague class(同事类)角色
    •  7  责任链模式(Chain of Responsibility)

       简单来说就是 责任链模式其实就是一个灵活版的if…else…语句,它就是将这些判定条件的语句放到了各个处理类中

    • 以注册时校验用户名密码为例, 类与设计模式中个角色对应关系如下:

      • Handler接口 : 对应Handler角色
      • NameCheckHandler, PwdCheckHandler : 对应ConcreteHandler角色
      • Client : 对应Client角色

         8 访问者模式(Visitor)

      • 一个商场(SuperMarket),通常都会包括(当然还会包含一些其他的组成部分):商店(Store)、监控室(MonitoringRoom)、卫生间(WaterCloset)。商场的访问者大致可以分为两大类:顾客(Customer)、商场工作人员(MarketStaff)。顾客可以逛商店、上卫生间,但却不能进入监控室;工作人员可以进入监控室、上卫生间,但却不能像顾客一样逛商店(除非他不想干了),也就是说对于商场的同一个地点,不同的访问者有不同的行为权限,而且访问者的种类很有可能需要根据时间的推移发生变化(没准哪天,工商局的人要来视察呢!此时就需要增加工商局人员的访问者了。)

         9 状态模式(State)

         简单来说就是 允许一个对象在其内部状态改变时, 改变它的行为。适用于一个对象存在多个状态(不同状态下行为不同), 且状态可相互转换

  • 相关阅读:
    python之路-day31-守护进程、锁、队列、生产者消费者模型
    python之路-day30-进程
    python之路-day26 初探网络编程
    python之路-day25-包
    python之路-day21-模块介绍1
    python之路-day19-面向对象之约束
    递归格式模板
    java创建一个窗体
    异常throws关键字 异常throw关键字
    多个catch块
  • 原文地址:https://www.cnblogs.com/lsy26821/p/13968878.html
Copyright © 2011-2022 走看看