观察者设计模式

Posted tony98

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者设计模式相关的知识,希望对你有一定的参考价值。

  观察者设计模式是一个非常有意思的设计模式,可以理解为一触即发。

  如果要想实现观察者设计模式需要以下的两个类:

    观察者:java.util.Observer;

    被观察者:java.util.Observable

范例:实现观察者

 1 package cn.Tony.demo;
 2 
 3 import java.util.Observable;
 4 import java.util.Observer;
 5 
 6 class Person implements Observer{//这些是所有的观察者
 7     @Override
 8     public void update(Observable o, Object arg) {//一旦你关注的事情发生了变化
 9         if(o instanceof House) {
10             if(arg instanceof Double) {
11                 System.out.println("【人们关注房子】房价上涨,新价格:"+arg);
12             }
13         }
14     }
15 }
16 class House extends Observable{//被观察者
17     private double price;
18     public House(double price) {
19         this.price=price;
20     }
21     public void setPrice(double price) {
22         if(price>this.price) {//价格上涨了
23             super.setChanged();//现在关注的内容改变
24             super.notifyObservers(price);//唤醒所有的观察者
25         }
26         this.price=price;
27     }
28 }
29 public class TestDemo {
30     public static void main(String[] args) throws Exception {
31         Person pA=new Person();
32         Person pB=new Person();
33         Person pC=new Person();
34         House house=new House(80000.00);
35         house.addObserver(pA);//必须手工设置观察者
36         house.addObserver(pB);//必须手工设置观察者
37         house.addObserver(pC);//必须手工设置观察者
38         house.setPrice(150000.00);
39     }
40 }

  这种设计模式在现在的开发中已经意义不大了

  理解一种设计模式。观察者是一个设计模式。

以上是关于观察者设计模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之单例模式

如何为片段设置观察者

永远观察实时数据的片段

Java设计模式补充:回调模式事件监听器模式观察者模式(转)

LiveData 没有观察具有共享视图模型的子视图页面片段

如何让自定义视图观察包含片段的生命周期事件而不是活动?