设计模式之观察者模式

观察者模式( Obsever Pattern)

当对象间存在一对多关系,多个对象依赖于一个对象时,可以使用观察者模式。

一对多中的“一”是指,这一个对象的状态发生改变时,所有依赖于它的对象(这是一对多中的“多”)都会得到通知并自动更新。

一是指一个改变源头,多是指多个观察者要获知这一个源头的改变。

观察者模式重要的有以下几点:

  1. 必须有Observer抽象类或接口,这是一对多中“多”的父。“多”中的对象(即观察者对象)所属的类必须是继承或实现了Observer。

  2. 必须有Subject类,这是一对多中的“一”,观察者模式的核心代码在于Subject类中有一个ArrayList属性,用于存放观察者。

  3. Observer的子类或实现类的构造方法可以接收一个 Subject对象作为参数,表明这个对象要观察哪一个subject对象,构造方法中必须包含将自己加入到subject对象的观察者列表中这一步骤,这样每个subject对象的ArrayList数组中都放着依赖于自己的观察者,就是一对多,当subject对象发生改变时,可以通过foreach循环遍历数组,来通知到依赖于它的每一个观察者。

部分参考代码如下

import java.util.ArrayList;
import java.util.List;
public class Subject {
       private List<Observer> observers = 
                       new  ArrayList<Observer>();
       public void attach(Observer observer){
                      observers.add(observer);      
       }
       ……
}
public class A extends Observer{
           public A(Subject subject){
           //将自身加入subject对象的观察者列表
                  subject.attach(this);
           }
……
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小挫折_仅此而已

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

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

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

打赏作者

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

抵扣说明:

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

余额充值