当你需要以第三者的身份去监听某个行为时可以用到。例如,你每天看天气预报,根据天气预报来决定自己是否需要带雨具等。(外面下雨,未带雨具-.-!)
天气预报 只会预报天气,是你无法更改的。
一个接口:
public interface Weather {
public void Forecast();
}
它的实现,假设今天的天气为下雨。
public class achieve implements Weather{
@Override
public void Forecast() {
System.out.println("天气预报--》下雨");
}
}
回调类,对设置监听的处理,以及天气预报的广播。
public class callback {
Weather mWeather = new achieve();
//设置监听
public void setListener(Weather w) {
this.mWeather = w;
}
//天气预报了,执行下面方法进行广播,谁监听谁知道天气。
public void execute(){
mWeather.Forecast();
}
}
自己的监听
public class main {
public static void main(String[] args) {
callback callback = new callback();
callback.execute();//第一次天气预报,只会打印天气,未设置监听,不会触发
callback.setListener(new achieve() {
public void Forecast() {
super.Forecast();
System.out.println("监听到了,要下雨,带把伞吧。");
}
});
callback.execute();//第一次天气预报,会打印天气,设置监听,会触发
}
}
这种方式进行,监听不会影响“天气预报”的广播。
运行结果
天气预报--》下雨
天气预报--》下雨
监听到了,要下雨,带把伞吧。