設計模式之觀察者模式
前提:主要四個類(抽象被觀察者(發佈者)、抽象觀察者(訂閱者)、具體被觀察者、具體觀察者)(ps:好久沒更新了,不知道更啥,先更着觀察者模式。。。)
用途:微信公衆號消息推送
1 抽象被觀察者接口:
public interface ObserverAble {
public void registerObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObserver();
}
2 抽象觀察者接口:
public interface Observer {
public void update(String message);
}
3 具體被觀察者類:
public class WechatServer implements ObserverAble {
private List<Observer> observerList;
private String message;
WechatServer() {
observerList = new ArrayList<>();
}
@Override
public void registerObserver(Observer o) {
observerList.add(o);
}
@Override
public void removeObserver(Observer o) {
observerList.remove(o);
}
@Override
public void notifyObserver() {
//循環發送消息
for (Observer observer : observerList) {
//調用具體觀察者的更新方法
observer.update(message);
}
}
//wechat發送信息
public void setMessage(String message) {
//發送消息操作
this.message = message;
notifyObserver();
}
}
4 具體觀察者類:
public class User implements Observer {
private String name;
User(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.println("具體觀察者 " + this.name + " 收到消息:" + message);
}
}
5 使用:
public static void main(String[] args) {
WechatServer observerAble = new WechatServer();
Observer observer1 = new User("張三");
Observer observer2 = new User("李四");
Observer observer3 = new User("王五");
observerAble.registerObserver(observer1);
observerAble.registerObserver(observer2);
observerAble.registerObserver(observer3);
observerAble.setMessage("66666666");
}
輸出如下:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.