ObserverPattern(观察者模式)

import java.util.ArrayList;
import java.util.List;

/**
 * 观察者模式
 * @author TMAC-J
 * 牵一发而动全身来形容观察者模式在合适不过了
 * 分为拉模式和推模式,这里不详细说了
 */
public class ObserverPattern {

    interface IObserved{

        void addObserver(IObserver observer);

        void removeObserver(IObserver observer);

        void notifyObservers();
    } 

    public class Observed implements IObserved{

        private List<IObserver> observers = new ArrayList<IObserver>();

        @Override
        public void addObserver(IObserver observer) {
            observers.add(observer);

        }

        @Override
        public void removeObserver(IObserver observer) {
            observers.remove(observer);
        }

        @Override
        public void notifyObservers() {
            for(IObserver observer:observers){
                observer.update();
            }
        }

    }

    interface IObserver{

        void update();

    }

    public class Observer implements IObserver{

        @Override
        public void update() {
            System.out.println("do update...");
        }

    }

    public void test(){
        IObserved observed = new Observed();
        IObserver observer = new Observer();
        observed.addObserver(observer);
        observed.notifyObservers();
    }

}
时间: 2024-08-01 22:48:11

ObserverPattern(观察者模式)的相关文章

HeadFirst设计模式(2)-观察者模式(ObserverPattern)

第二节观察者模式(OberverPattern) HeadFirst这节给出的案例是气象站监测应用系统.背景是:气象站通过物流装置获取气象信息,生成WeatherData(气象数据),最后通过布告板显示给用户.WeatherData可以获取物理装置的数据,并且将数据显示到布告板上:目前状况(温度.湿度.气压).气象统计和天气预报. 先给出一个错误示范 public class WeatherData { public float GetTemperature() { return 25; } p

设计模式----行为型模式之观察者模式(Observer Pattern)

下面是阅读<Head First设计模式>的笔记. 观察者模式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. JDK API内置机制 JDK1.0版本就已经包含了java.util.Observer和java.util.Observable,TODO. java.util.Observer是一个接口,所有使用内置机制实现观察者模式,都需要实现该接口.该接口只定义了一个方法 void update(Observable o, Object a

设计模式之观察者模式(Observer Pattern)

一.什么是观察者模式? 把现实世界中的报纸与订阅者的关系抽象出来就是观察者模式,一种报纸对应多个订阅者,订阅者可以随时解除订阅,未订阅的读者也可以随时开始订阅.一旦有新报纸发布,所有的订阅者都会收到新内容. 在观察者模式中,报纸叫做主题Subject,订阅者叫做观察者Observer,一个Subject可以被多个Observer关注,Observer可以随时解除关注,新的Observer也可以随时关注Subject.Subject内容发生改变时,会通知所有的Observer. 二.举个例子 很多

读书笔记-常用设计模式之观察者模式

1.观察者(Observer)模式也叫发布/订阅(Publish/Subscribe)模式,是MVC(模型-视图-控制器)模式的重要组成部分.在软件系统中,一个对象状态改变也会连带影响其他很多对象的状态发生改变.能够实现这一需求且复用性强,对象之间匿名通信的,观察者模式是其中最适合的一个. 2.观察者模式的类图如下: 它有四个角色: 抽象主题(Subject):在Objective-C中,抽象主题是一个协议,它是观察者集合容器,定义了添加观察者(attach)方法.移除观察者(detach)方法

设计模式-行为型模式-观察者模式

观察者模式 观察者模式有时也被称为发布/订阅模式,该模式定义了一种一对多的依赖关系,可以让多个观察者对象同时监听某一个主题对象,当主题对象的状态发生变化时,通知所有观察者对象,使它们能够自动更新自己.例如某个Text文本框的text属性绑定到X数据源上,当X数据源发生更改时自动同步更新Text的值.被观察者要维护一个观察者的List,逐个通知可能存在性能的问题(比如List很长,或者update的逻辑耗时等). //观察者接口public interface IWatcher { public

深入浅出设计模式——观察者模式(Observer Pattern)

模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应.在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察者模式的模式动机. 模式定义观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新.观察者模式又叫做发布-订阅(Pu

简明的观察者模式

什么是观察者模式? 观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式.模型-视图(View)模式.源-收听者(Listener)模式或从属者模式)是软件设计模式的一种.在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察者所提供的方法来实现.此种模式通常被用来实现事件处理系统.由于C#实现了很好的委托机制,因此实现起来简单明了,通俗易懂. 如何实现观察者模式呢? 观察者模式包含两个主题:观察者与被观察者

设计模式学习--观察者模式

观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖着都会收到通知并自动更新. 设计原则 为了交互对象之间的松耦合设计而努力 1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace Obse

java/android 设计模式学习笔记(2)---观察者模式

这篇来讲一下观察者模式,观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统.订阅--发布系统等.因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖.以GUI系统来说,应用的UI具有易变性,尤其是前期随着业务的改变或者产品的需求修改,应用界面也经常性变化,但是业务逻辑基本变化不大,此时,GUI系统需要一套机制来应对这种情况,使得UI层与具体的业务逻辑解耦,观察者模式此时就派上用场了. PS:对技术感兴趣的同鞋加群544645972一起交流. 设计模式