ZKX's LAB

观察者模式在实际用的多吗 为什么要用观察者模式

2020-10-04知识4

什么是观察者模式`? 观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF给观察者模式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在这里先讲一下面向对象设计的一个重要原则—单一职责原则。因此系统的每个对象应该将重点放在问题域中的离散抽象上。因此理想的情况下,一个对象只做一件事情。这样在开发中也就带来了诸多的好处:提供了重用性和维护性,也是进行重构的良好的基础。因此几乎所有的设计模式都是基于这个基本的设计原则来的。观察者模式的起源我觉得应该是在GUI和业务数据的处理上,因为现在绝大多数讲解观察者模式的例子都是这一题材。但是观察者模式的应用决不仅限于此一方面。下面我们就来看看观察者模式的组成部分。1)抽象目标角色(Subject):目标角色知道它的观察者,可以有任意多个观察者观察同一个目标。并且提供注册和删除观察者对象的接口。目标角色往往由抽象类或者接口来实现。2)抽象观察者角色(Observer):为那些在目标发生改变时需要获得通知的对象定义一个更新接口。抽象观察者角色主要由抽象类或者接口来实现。3)具体目标角色(Concrete Subject):将有关。

观察者模式在实际用的多吗 为什么要用观察者模式

观察者模式是什么 官方解释:观察者模式(有时又被称为发布-订阅Subscribe>;模式、模型-视图View>;模式、源-收听者Listener>;模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。个人理解:观察者模式是一种思想,不需要人为的去关注观察者和被观察者之间是怎样联系的,实现了解耦,只需要对象去注册被观察者(Observerable)与观察者(Observer),然后被观察者去添加一个或者多个观察者,当被观察者发生变动就会立即通知所有的观察者,下面让我们来看看是怎样实现这个功能的。被观察者首先通过addObserver(Observer o)来添加一个观察者,底层代码中会把这个对象o放进一个vector集合中,当然也可以添加多个观察者,当观察者发生变动的时候就会触发setChanged();notifyObservers();这两个方法,然后底层代码中就回去遍历装有观察者的那个vector,然后for(int i=arrLocal.length-1;i>;=0;i-)((Observer)arrLocal[i]).update(this,arg);调用update方法通知每一个观察者,这样观察者对象中就可以拿到被观察者的。

观察者模式在实际用的多吗 为什么要用观察者模式

观察者模式和发布订阅模式有什么不同? 虽然我看众多资料说发布订阅是观察者模式的别名,但是我有个同学的老师让他们说说它俩的区别,它俩真的有…

观察者模式在实际用的多吗 为什么要用观察者模式

#观察者模式

随机阅读

qrcode
访问手机版