设计模式——行为型模式之观察者(超常用的模式之一、类比+图解+完全无代码、一文看懂观察者模式,深入理解事件监听机制的实现思想)

设计模式——行为型模式之观察者(超常用的模式之一、类比+图解+完全无代码、一文看懂观察者模式,深入理解事件监听机制的实现思想),第1张

设计模式——行为型模式之观察者(超常用的模式之一、类比+图解+完全无代码、一文看懂观察者模式,深入理解事件监听机制的实现思想)

文章目录
    • 前言
    • 一、观察者模式的定义
      • 1.1 行为型的设计模式
      • 1.2 观察者模式
    • 二、观察者模式类比、实现
      • 2.1 观察者模式类比_列1(博主更新通知)
      • 2.2 观察者模式类比_列2(事件监听机制)
      • 2.3类图和实现
    • 设计模式系列文章


前言

设计模式是进行实际开发的基石,是前人不断总结试错得出的宝贵开发经验,也是开发人员之间相互理解共同设计的关键标准。学习设计模式能够帮助我们初学者更好理解结构化的开发流程,摆脱只会写一段代码而不能上升为一个项目的不上不下的尴尬处境

作为设计模式之行为型模式开篇,观察者模式、或者叫事件-监听器模式无疑是我们接触得最多的,也是用法最广泛的设计模式之一
其核心思想是将监听器注册到事件,当事件发生触发通知监听器触发相应功能(将观察者与被观察者绑定,被观察者改变,通知观察者)

一、观察者模式的定义 1.1 行为型的设计模式

首先明确观察者模式属于 —— 行为型的设计模式:主要负责功能包含父类与子类关系设计、类间信息传递(比如观察者)、表示类状态的设计和中间类完成行为四类设计。

简单的说:行为型设计模式:负责设计类的行为的设计模式(方法分配,消息传递、状态变化、中间件转发)

1.2 观察者模式

观察者是实现被观察者(比如键盘点击事件),与观察者(键盘事件监听器)之间信息传递的设计方法,其核心要点在于实现被观察者更新自动通知观察者。

考虑如下设计:
很明显的是:通过循环判断被观察者是否更新(事件是否发生)这种方法会阻塞主程序、空转浪费时间等,问题很大

于是观察者模式诞生了——解决了该类问题:

当被观察者发生或者更新,会自动触发相应观察者的相应函数,而不是由观察者来判断。实现了功能切分和解耦,观察者只负责执行观察结果,被观察者负责通知

具体的设计和实现如下:

二、观察者模式类比、实现 2.1 观察者模式类比_列1(博主更新通知)

现在有一位博主叫代码之狐狸(点击跳转到主页),有位热爱学习的小可爱想要持续获取博主的动态,但是又不可能一直刷新查看,所以他选择了关注,这样每次更新都会通知他啦

2.2 观察者模式类比_列2(事件监听机制)

在期末作业里面常常用到的事件监听机制,具体图解如下,里面的类都是Java核心库里面封装好的XXEvent(事件类)、XXListener(监听类)等:

2.3类图和实现

为了实现解耦:约定使用接口——一个具体的被观察者可以通知多个不同的观察者(只要实现了观察者接口),反之同理。

利用Java类库提供的java.util.Observer和java.util.Observable实现——博主更新通知例子,实现图解如下(具体代码大家可以自己尝试):

设计模式系列文章 系列文章:

一、创建型模式——工厂模式
二、创建型模式——单例模式、原型模式
三、创建型模式——建造者模式
四、结构型模式——装饰者模式
五、结构型模式——代理、适配器模式
六、结构型模式——外观模式
七、结构型模式——三合一(组合模式、桥接模式、享元模式)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5691183.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存