监听器模式

1:监听接口(监听温度)

package listenertest;

public interface TairListener {

	public void climateWarming(int tair);
}

 2:事件源(当调用Tari时,会调用tairListener.climateWarming)

package listenertest;

public class Now {

	private TairListener tairListener;
	private int tari;

	public Now(TairListener listener) {
		this.tairListener = listener;
	}

	public void Tari(int tari) {
		this.tari += tari;
		tairListener.climateWarming(this.tari);
	}
}

 3:测试(内部包括监听类)

 

package listenertest;

import java.util.Date;

public class Test {
	public static void main(String[] args) {
		Now now =new Now(new TairListener() {
			@Override
			public void climateWarming(int tair) {
				System.out.println(String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM tair [ %2$s ].", new Date(),tair));
			}
		});
		now.Tari(1);
		now.Tari(1);
		now.Tari(1);
		now.Tari(1);
	}
}

 

参拷:http://blog.csdn.net/yjkwf/article/details/7327757

1、声明一个接口,接口中定义方法

 

[java]   view plain copy
  1. //声明接口  
  2. public interface Icallback   
  3. {  
  4.     public void run();//接口方法  
  5. }  

2、在某个类中,我们关心其中某个方法是否被调用,那么执行如下步骤:

 

2.1、在类中定义接口对象

2.2、给类增加一个成员函数,函数中给接口对象赋值,该函数既是注册函数

2.3、在关心的方法中,调用接口对象中定义的方法

 

[java]   view plain copy
  1. public class third {  
  2.     private Icallback listener = null;//2.1、在类中定义接口对象  
  3.     public void setCallbackListener(Icallback cbl){//2.2  
  4.         this.listener = cbl;  
  5.     }  
  6.     public void helloThird(){  
  7.             System.out.println("helloThird() is invoked.");  
  8.             if(listener != null)//2.3、在关心的方法中,调用接口对象中定义的方法  
  9.                 listener.run();  
  10.     }  
  11. }  

3、在另外一个类中,我们关心helloThird函数是否被调用,那么如下实现:

 

 

[java]   view plain copy
  1. public class Tools{  
  2.     public static void main(String[] args) {  
  3.         third td = new third();  
  4.         td.setCallbackListener(new Icallback(){  
  5.             public void run() {  
  6.                 // TODO Auto-generated method stub  
  7.                 System.out.println("detected third function is called.");  
  8.             }  
  9.         });  
  10.         td.helloThird();  
  11.     }  
  12. }  

在上面调用了third类中的helloThird()函数,那么我们便检测到了该函数的调用,接着调用了我们自己的System.out.println("detected third function is called.");函数。

 

或者实现方式如下:

 

[java]   view plain copy
  1. public class Tools implements Icallback{  
  2.     public static void main(String[] args) {  
  3.         Tools tools = new Tools();  
  4.         third td = new third();  
  5.         td.setCallbackListener(tools);  
  6.         td.helloThird();  
  7.     }  
  8.     @Override  
  9.     public void run() {  
  10.         // TODO Auto-generated method stub  
  11.         System.out.println("detected third function is called.");  
  12.     }  
  13. }  

在Tools类中,实现了某个接口,并override该接口中所有的方法,那么在override的接口中便可以检测我们关心的函数是否被调用了。

 

你可能感兴趣的:(监听器)