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


前言

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

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

一、观察者模式的定义

1.1 行为型的设计模式

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

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

1.2 观察者模式

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

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

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

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

具体的设计和实现如下:

二、观察者模式类比、实现

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

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

在这里插入图片描述

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

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

在这里插入图片描述

2.3类图和实现

为了实现解耦:约定使用接口——一个具体的被观察者可以通知多个不同的观察者(只要实现了观察者接口),反之同理。
在这里插入图片描述
利用Java类库提供的java.util.Observer和java.util.Observable实现——博主更新通知例子,实现图解如下(具体代码大家可以自己尝试):

在这里插入图片描述

设计模式系列文章

系列文章:

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


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码之狐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值