• 23种设计模式(十七)观察者模式(阁瑞钛伦特软件-九耶实训)


    常说的设计模式是23种设计模式,分为3大类:

    • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
    • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
    • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

    上次咱们说了策略模式,今天咱们来说“观察者模式”。

    如果要理解“观察者模式”关键在于理解“观察者”。对于行为型模式来说,观察这个行为是“观察者观察被观察者”。所以,我们构建的程序,要分两个部分,一部分是“观察者”,一部分是“被观察者”。当然,“观察者”与“被观察者”之间的关系是我们强加给程序的意义。实际上,需要注意数据流向,从而读懂代码真正的逻辑。

    先建立用户程序,用户要有一个能更新或者能接收信息的行为:

    所以接口定义为:

    用户的实现类:

     

     

    在建立一个支持多用户的程序,需要对多用户进行管理,也就是要有添加用户的行为,删除用户的行为以及执行用户更新的行为。

    所以,接口定义为:

    接口的实现类中,由于支持多用户,所以用一个集合来存储多个用户对象。

    当执行attach方法时,添加一个用户对象

    当执行detach,注销一个用户对象

    当执行notifyObserver,执行所有已注册用户对象的更新方法

    应用如下:

    “ConcreteSubject”实现类实例化对象后,调用“attach”添加一个“ConcreteObserver”对象,用“notifyObserver”执行所有已注册用户的“update”更新。

    下面咱们来看一下适用场景:比如说:一个神有很多的宠物,神只要一个“神之呼唤”就能让他麾下的所有宠物执行命令。

    先建立宠物的接口:宠物必须有更新的方法。也就是接收神的信息的方法。

     

    实现一个宠物龟 

     

    在建立神的接口,要能够添加宠物对象,移除宠物对象以及执行宠物行为并发送命令。

     

     实现接口的神:

    “attch”添加宠物对象

    “detach”移除宠物对象

    “notifyPet”使全部宠物听令

    实际应用时:神的对象添加宠物“萨瓦”和“迪卡”并发送指令“来~来~来~”

     

    最终宠物所有宠物接收到神的命令。

     

     

     

  • 相关阅读:
    解决SSH远程登录开饭板出现密码错误问题
    C语言进阶——字符函数和字符串函数(下)
    【UE5】解决UE5无法播放mp4视频
    迅狐跨境商城系统|全平台兼容|前端采用uni-app跨端框架,后端采用ThinkPHP5框架
    Opera 浏览器
    单调栈的本质与应用
    CentOS8 安装Yapi
    006-JavaSE基础巩固练习:while循环结构的练习
    活体检测综述 Deep Learning for Face Anti-Spoofing: A Survey 阅读记录
    OpenStack之云计算技术与架构-1
  • 原文地址:https://blog.csdn.net/m0_69234258/article/details/126251679