所谓监听程序就是盯着很多程序的状态,并且监听必然也有监听客户端,让一个程序继承某个接口实现一个方法就是实现了监听,并且可以根据不同的监听结果处理。例如:
#定义一个监听接口,同意统一监听所有的被监听者,这就是监听人 public interface MyListerner{ void onSomethingOccur(); } #实现一个监听接口,因为onSomethingOccur现在是ST1内部的方法,所以能获得他所有的信息,也就能监听。(事实上如果不在内部有眼线如何监听那?) public class ST1 implements MyListener{ public void onSomethingOccur(){ //do something; } } #实现监听接口二 public class ST2 implements MyListener{ public void onSomethingOccur(){ //do something; } }
如此:如此当要监听监听人的时候,只要运行接口MyListerner的onSomethingOccur()方法就可以了,ST1或ST2会在运行的时候,自动按照监听者的要求行事。这实际上还是在运用运行时绑定的特性来实现的功能。
- 监听模式如果不是针对不同的实现类实现不同的方法而仅仅是收集数据的话,如同数据共享。
- 监听就是如影随形,自己每做某件事就有人知道并且对自己的行为产生印象,这正是动态绑定的应用。
- Andorid开发中使用的监听最多,所以实现的接口也是最多的。
- Android的Binder是一个接口,Andorid的IPC通讯也是监听的原理,如同为两个进程开辟了一块共享内存。
- Android SystemServer进程会让看门狗监视ActivityManagerService PowerManegerService WindowManagerService三个服务的状态,以在出现问题后及时的重启java世界,其实现也是让这些Service实现monitor接口,然后定期的调用看门狗的moniter方法。
- java世界凡是监视、检查多个等针对不确定对象或针对多个对象的活动,都是基于的接口,因为接口是动态绑定的,只要对对象注册了这个方法,这个方法在运行的时候就会自动的按照需求去做。
- 上面举的例子最终还都是要回归到静态绑定和动态绑定的特点上来。