【设计模式】观察者模式实例与代码分析
系列文章目录
前言
设计模式,又称为软件设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。学习设计模式可以提高程序员的思维能力、编程能力和设计能力,使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
一、🌍观察者(Observer)模式是什么?🌍
指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式。
二、🌍观察者(Observer)模式的优缺点🌍
优点: 1)降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系; 2)目标与观察者之间建立了一套触发机制。 缺点: 1)目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用; 2)当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。
三、🌍观察者(Observer)模式的结构🌍
观察者模式的主要角色有: ⑴ 抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法。 ⑵ 具体主题(ConcreteSubject)角色:也叫具体目标类,它实现抽象目标中的通知方法,当具体主题的内部状态发生改变时,通知所有注册过的观察者对象。 ⑶ 抽象观察者(Observer)角色:它是一个抽象类或接口,它包含了一个更新自己的抽象方法,当接到具体主题的更改通知时被调用。 ⑷ 具体观察者(ConcreteObserver)角色:实现抽象观察者中定义的抽象方法,以便在得到目标的更改通知时更新自身的状态。
四、🌍实例演示🌍
1.🌕实例概述🌕
抽象目标类:Subscribe订阅类,存储抽象观察者数组,增删观察者,设置值事件触发器。 具体观察者角色:WXUser1、WXUser2、WXUser3类表示用户1、用户2、用户3······(这里可以自己去扩写很多观察者角色类)
2.🌕代码演示🌕
话不多说,代码附上!
3.🌕实验结果🌕
发布成功 用户名为"WXUser1"的用户已收到1条订阅消息 用户名为"WXUser2"的用户已收到1条订阅消息 用户名为"WXuser3"的用户已收到1条订阅消息 //----------------------------// 发布失败 //----------------------------// 发布成功 用户名为"WXUser1"的用户已收到2条订阅消息 用户名为"WXuser3"的用户已收到2条订阅消息 //----------------------------// 发布失败
总结
以上就是今天要讲的内容,本文仅仅简单介绍了行为模式下观察者模式的定义,优缺点以及其的模式结构,并通过实例演示,进一步反应了在一定需求条件下,观察者模式的优点。
下一篇:
Java算法 基础知识-了解递归