一、前言:
地址: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 + "购买青芒");
}
}