Java设计模式之观察者模式
2017-12-13 21:33
337 查看
//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.被观察者必须持有观察者的引用,要记得回收(解绑)观察者。**
相关文章推荐
- JAVA设计模式之观察者模式2
- Java设计模式-------观察者模式
- JAVA 设计模式 观察者模式
- Java设计模式_行为模式_观察者模式
- JAVA设计模式之观察者模式
- java设计模式20_观察者模式
- Java设计模式(观察者模式)
- 设计模式之观察者模式(有源码简单实现及java函数简单实现)
- Java设计模式之五:观察者模式
- Java设计模式——观察者模式
- (设计模式)观察者模式Observer-java
- Java设计模式之观察者模式
- java设计模式之三 —— 观察者模式整理
- Java设计模式之观察者模式
- JAVA设计模式(15) —<行为型>观察者模式(Observer)
- 设计模式:观察者模式(基于 Java)
- Java设计模式—观察者模式(Observer pattern)
- java设计模式_观察者模式
- Java设计模式——观察者模式(Observer)
- JAVA设计模式(九)——观察者模式