观察者模式

一、前言:

地址:https://gitee.com/luoyanyong/PatternDemo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、代码实现:

1、客户端调用:

  MangoAttention attentions = new MangoAttention();//目标
        attentions.add(new CustomerObserver("deer"));
        attentions.add(new CustomerObserver("james"));
        attentions.add(new CustomerObserver("lison"));
        attentions.add(new CustomerObserver("mark"));

        //到货
        attentions.perform();

2、MangoAttention

public class MangoAttention extends Attentions{

    @Override
    public void notifyObservers() {
        //遍历观察者集合,调用每一个顾客的购买方法
        for(Observer obs : observers) {
            obs.update();
        }
    }

    //芒果到货了
    public void perform(){
        this.notifyObservers();
    }
}

3、Attentions

public abstract class Attentions {
    //关注客户列表
    protected List<Observer> observers = new ArrayList();

    //关注顾客
    public void add(Observer observer) {
        observers.add(observer);
    }

    //取消关注
    public void remove(Observer observer) {
        observers.remove(observer);
    }

    //发通知
    public abstract void notifyObservers();
}

4、Observer

public interface Observer {
    void update();
}

5、CustomerObserver

public class CustomerObserver implements Observer {

    private String name;

    public CustomerObserver(String name){
        this.name = name;
    }

    @Override
    public void update() {
        Log.d("LUO",name + "购买青芒");
    }
}


版权声明:本文为weixin_39069034原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。