观察者模式:定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所以依赖于他的对象都得到通知并更新。
角色分析:
抽象目标角色(Subject):
目标角色提供观察者注册、删除接口,并发出通知。
抽象观察者角色(IObserver):
当目标角色发生改变时,获得通知的对象的一个更新接口。
实现:
package observer; /** *create by datao.wang 2014-2-8-下午2:45:04 *目标对象 */ public interface ISubject { public abstract void notifyObserver(); } package observer; import java.util.ArrayList; import java.util.List; /** *create by datao.wang 2014-2-8-下午2:50:48 */ public class Subject implements ISubject { List<IObserver> list=new ArrayList<IObserver>(); @Override public void notifyObserver() { for(IObserver ob:list){ ob.update(); } } public void addObserver(IObserver o){ list.add(o); } public void dosomething(){ System.out.println("我要跟新了"); //通知更新 notifyObserver(); } } package observer; /** *create by datao.wang 2014-2-8-下午2:41:04 *抽象观察者 */ public interface IObserver { public void update(); } package observer; /** *create by datao.wang 2014-2-8-下午2:42:33 *观察者1号 */ public class Observer1 implements IObserver { @Override public void update() { System.out.println("发生改变...."); } } package observer; /** *create by datao.wang 2014-2-8-下午2:42:59 *观察者2号 */ public class Observer2 implements IObserver { @Override public void update() { System.out.println("发生改变....."); } } package observer; /** *create by datao.wang 2014-2-8-下午2:58:00 *客户端调用 */ public class Client { public static void main(String[] args) { Subject subject=new Subject(); Observer1 s1=new Observer1(); Observer2 s2=new Observer2(); subject.addObserver(s1); subject.addObserver(s2); subject.dosomething(); } }
应用场景:
1、当一个对象的改变必须通知其他对象的时候,可采用观察者模式。
优点:
1、实现目标对象鱼观察对象的松耦合
2、实现广播通知注册的对象
缺点:
1、如果观察者众多,话费时间较多。
2、如果误操作目标对象,可能引起一连串的状态变更。
3、异步通知,注意多线程操作。
相关推荐
**C#面向对象设计模式纵横谈(19)**:**观察者模式**(Observer Pattern)是行为型模式的一种,它在软件工程中扮演着至关重要的角色。观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态...
### (行为型模式) Observer 观察者模式 #### 概述 观察者模式是一种行为设计模式,它定义了一种一对多的关系,让多个观察对象同时监听某一个主题对象。当主题对象发生变化时,所有观察者对象都会收到通知并进行...
观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在软件工程中,这常用于实现事件驱动编程,使得系统能够及时响应变化。 在...
观察者模式 概述 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 适用性 1.当一个抽象模型有两个方面,其中一个方面依赖于另一方面。 将这二者封装...
本篇文章将深入探讨“Observer”观察者模式,这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心概念是主题...
"ObserverPattern(订阅模式)3.zip"中的代码可能进一步阐述了观察者模式,这里的“订阅”一词可能意味着用户可以订阅特定的主题,只有当这些主题的状态改变时,用户才会收到通知。这与传统的观察者模式类似,但更加...
观察者模式详解 观察者模式是23种设计模式中的一种,尤其是在软件设计过程中体现的更是立足无穷。本文将详细讲解观察者模式的概念和实现,通过代码注释来解释各个组件的作用。 一、观察者模式的定义 观察者模式是...
本文实例讲述了C#设计模式之Observer观察者模式解决牛顿童鞋成绩问题。分享给大家供大家参考,具体如下: 一.理论定义 观察者模式 描述了 一种 一对多的关系。 当某一对象的状态发生改变时,其他对象会得到 改变的...
观察者模式(Observer)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在C++中广泛应用,特别是在需要...
观察者模式(Observer)是软件设计模式中的一种行为模式,其主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动...
观察者模式(Observer)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在软件开发中广泛应用于事件处理和实时...
观察者模式(Observer)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态变化时通知多个“观察”该对象的其他对象。这个模式在软件工程中扮演着重要角色,尤其是在事件驱动编程和发布/订阅系统中。...
观察者模式(Observer)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态变化时通知多个“观察”该对象的其他对象。这个模式在软件工程中广泛应用于事件驱动编程,例如用户界面组件的交互或者系统状态的...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的系统或者...