观察者模式代码

淺唱寂寞╮ 提交于 2019-12-18 20:36:17

观察者模式代码

public class One implements Subject {
    private ArrayList<Observer> observers = new ArrayList<>();

    private String msg;
    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    @Override
    public void removeObserver(Observer observer) {
        int index = observers.indexOf(observer);
        if (index >= 0) {
            observers.remove(index);
        }
    }

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

    /**
     * 主题更新信息
     */
    public void setMsg(String msg) {
        this.msg = msg;
        notifyObservers();
    }
}

订阅者

package com.example.jingbin.designpattern.observer.classs;

import android.util.Log;

import com.example.jingbin.designpattern.observer.interfaces.Observer;
import com.example.jingbin.designpattern.observer.interfaces.Subject;

/**
 * Created by jingbin on 2016/10/21.
 * 模拟第一个使用者
 */

public class ObserverUser1 implements Observer {

    public ObserverUser1(Subject subject) {
        subject.registerObserver(this);
    }

    @Override
    public void update(String msg) {
        Log.e("-----ObserverUser1 ", "管道流水面 在线面捞着吃 ");

    }
}

用法

                // 创建两个订阅者
              One  one= new One   ();
              observerUser1 = new ObserverUser1(one);
              one.setMsg("发放面条了");
        
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!