观察者模式是安卓开发中比较常用的一种设计模式,尤其是在某些特定项目中应用特别广泛,平时在网上收到的详解也只是一些举例说明和简单举例,离实际应用还是有着较大差距,本人最近做的一个项目中就大量运用了该模式,于是就想着记录一下自己的所学,同时分享一下自己的心得,如有不足之处,还请各位大神指点迷津。。。
被观察者类的创建
被观察者类主要是要继承java中的Observable类,这也是java中自带的被观察者类,当被观察者状态改变并需要传达给观察者的时候,在此类中需要写上下面两行代码:
//在通知 所有观察者之前 一定要调用 setChanged()方法来设置被观察者的状态已经被改变
this.setChanged();
//通知所有观察者自己的状态以改变
//notifyObservers 方法在通知完所有观察者 后, 会自动调用 clearChanged 方法来清除被观察者 的状态改变。
this.notifyObservers(Object object); //参数是需要传递给观察者的数据
这样,所有的观察者就都可以接收到状态改变的通知
观察者类的创建
观察者类主要是要实现java中的Observer类,这个类也是java中自带的,直接implements就好,实现后会有一个update(Observable observable, Object data)方法,其中第二个参数就是从被观察者类中传过来的数据,但这时观察者时接收不到被观察者状态改变的通知的,还需要添加几句代码:
具体是初始化被观察者类,然后用被观察者类调用addObserver()方法,即添加为观察者的意思
被观察者类.addObserver(this);
同样,如果观察者类不想再接收被观察者的状态改变通知,调用下面代码即可:
被观察者类.deleteObserver(this);
当上面操作都完成后,用户就可以在update()方法里监听到被观察者的状态改变并得到传递过来的数据,从而进行自己想要的操作。一般来说观察者模式最多的还是配合socket一起使用,已达到数据实时更新的效果。