欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA设计模式(一)观察者模式

程序员文章站 2022-05-30 12:06:31
...
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

主题和观察者定义了一对多的关系。观察者依赖于此主题,只要主题状态一有改变,观察者就会被通知。

类图:
JAVA设计模式(一)观察者模式
            
    
    博客分类: JAVA学习笔记 java设计模式

package com.zaxk.study.pattern;

import java.util.Observable;
import java.util.Observer;

/**
 * 观察者模式
 * Created by ZhuXu on 2017/11/9 0009.
 */
public class ObserverTest {

    public static void main(String[] args) {
        School school = new School();
        Student student = new Student(school);
        Teacher teacher = new Teacher(school);
        school.notice();
    }
}

/**
 * 观察者:学生
 */
class Student implements Observer {

    Observable observable;

    public Student(Observable observable) {
        this.observable = observable;
        observable.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg) {
        if (o instanceof School) {
            System.out.println("Student 收到通知:" + ((School) o).getNotice());
        }
    }
}

/**
 * 观察者:老师
 */
class Teacher implements Observer {

    Observable observable;

    public Teacher(Observable observable) {
        this.observable = observable;
        observable.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg) {
        if (o instanceof School) {
            System.out.println("Teacher 收到通知:" + ((School) o).getNotice());
        }
    }
}

/**
 * 被观察者:学校
 */
class School extends Observable {

    String notice;

    public void notice() {
        setNotice("放假通知:1~7号放假");
        setChanged();
        notifyObservers();
    }

    public String getNotice() {
        return notice;
    }

    public void setNotice(String notice) {
        this.notice = notice;
    }
}


JDK中已实现的观察者模式:Swing中的事件处理。
当组件状态(被观察者)发生改变时,通知监听器(观察者)处理对应事件。
  • JAVA设计模式(一)观察者模式
            
    
    博客分类: JAVA学习笔记 java设计模式
  • 大小: 25.3 KB
相关标签: java 设计模式