Java21观察者模式

也可被称为发布-订阅模式
通过观察者模式可以定义一对多的依赖关系,可以让多个观察者监听某个主体对象(被观察者)。等主题对象状态发生变化,会主动通知所有的观察者。

观察者模式第一步:新建接口

package com.javawu.observer;

public interface Notify {
    //通知方法
    public void notified(String weather);
}

观察者模式第二步:观察者实现接口

package com.javawu.observer;
//相当于学生订阅天气预报
//相当于观察者
public class Student implements Notify {
    public void notified(String weather) {
        System.out.println(weather);
    }
}

观察者模式第三步:主体对象(被观察者)

package com.javawu.observer;
import java.util.ArrayList;
import java.util.List;
//相当于主体对象,被观察者
public class Station{
    //用来存放观察者
    List list = new ArrayList<>();
    public void addObserver(Notify notify) {
        if(!list.contains(notify)) {
            list.add(notify);
        }
    }
    //删除观察者
    public void removeObserver(Notify notify) {
        if(list.contains(notify)) {
            list.remove(notify);
        }
    }
    //通知观察者
    public void notifyObserver() {
        for (Notify notify : list) {
            notify.notified("暴雨:适合晨练");
        }
    }
}

观察者模式的使用

package com.javawu.observer;
public class Demo1 {
    public static void main(String[] args) {
        Station station = new Station();
        Student student = new Student();
        Student student2 = new Student();
        //添加观察者
        station.addObserver(student);
        station.addObserver(student2);
        //通知观察者
        station.notifyObserver();
    }
}

你可能感兴趣的:(Java21观察者模式)