Java设计模式之观察者模式

来源:互联网 发布:jav网络机顶盒如何刷机 编辑:程序博客网 时间:2024/06/07 20:12
//demo 演示public static void main(String[] args) {        // 新建观察者        ConcreteObserver obsever1=new ConcreteObserver();        // 新建被观察者        ConcreteSubject concreteSubject=new ConcreteSubject();        //绑定观察者        concreteSubject.attached(obsever1);        //通知刷新内容        concreteSubject.notifyDataChange("圣诞快乐!!!");;        //回收解绑        concreteSubject.dettached(obsever1);    }
//抽象观察者public interface Observer {    //刷新内容    void dataChanged(String content);}//具体观察者public class ConcreteObserver implements Observer {    @Override    public void dataChanged(String content) {        // TODO Auto-generated method stub        System.out.println("观察者1:收到消息=="+content);    }}
//抽象被观察者public class AbstractSubject {    // 用來存观察者    protected List<Observer> list = new ArrayList<>();    // 绑定观察者    protected void attached(Observer observer) {        if (observer != null)            list.add(observer);    }    // 解除绑定    protected void dettached(Observer observer) {        if (observer != null)            list.remove(observer);    }    // 通知内容刷新    protected void notifyDataChange(String content) {        if (list.size() > 0) {            for(Observer observer: list) {                observer.dataChanged(content);                System.out.println("观察者解除绑定!");            };        }    }}//具体被观察者public class ConcreteSubject extends AbstractSubject {    //自定义别的实现方法}

这里写图片描述

**总结:观察者有两个重要点
1.被观察者必须有个集合来存放观察者。
2.被观察者必须持有观察者的引用,要记得回收(解绑)观察者。**

原创粉丝点击