思考了一下java中的监听事件实现方案,没有去看源码,不知道以下实现是否可以:
监听器类:
package listener;/**
* 功能描述
*
* @author
*
*/
public interface LoveListener {
/**
*
* description: 监听爱上别人事件
*/
public void loves(LoveEvent e); /**
*
* description: 监听被爱事件
*/
public void beLove(LoveEvent e);
}事件源类,类似于jdk里的JButton等类:
package listener;//
public class Person {
private LoveListener loveListener;
private LoveEvent loveEvent = new LoveEvent(); public void addLoveListener(LoveListener loveListener) {
this.loveListener = loveListener;
//设置事件源
loveEvent.setObj(this);
} public void love() {
if (null != loveListener) {
loveListener.loves(loveEvent);
} }
}
...Event类(类似于jdk的ActionEvent):
package listener;public class LoveEvent {
private Object obj = null; public Object getSource() {
return obj.toString();
} public Object getObj() {
return obj;
} public void setObj(Object obj) {
this.obj = obj;
}
}
继承事件源的类(类似于....extends JButton):
package listener;public class Boy extends Person implements LoveListener {
public Boy() {
this.addLoveListener(this);
//触发事件
this.love();
} @Override
public void beLove(LoveEvent e) {
System.out.println("");
} /**
* 监听函数
*/
@Override
public void loves(LoveEvent e) {
System.out.println("你爱上了某人");
System.out.println("你爱上的人是:" + e.getSource()); } public static void main(String[] args0) {
Boy boy = new Boy();
boy = new Boy();
}
}每new 个Boy对像都会触发love事件
比较简单不作多解释,谢谢批评&拍砖
监听器类:
package listener;/**
* 功能描述
*
* @author
*
*/
public interface LoveListener {
/**
*
* description: 监听爱上别人事件
*/
public void loves(LoveEvent e); /**
*
* description: 监听被爱事件
*/
public void beLove(LoveEvent e);
}事件源类,类似于jdk里的JButton等类:
package listener;//
public class Person {
private LoveListener loveListener;
private LoveEvent loveEvent = new LoveEvent(); public void addLoveListener(LoveListener loveListener) {
this.loveListener = loveListener;
//设置事件源
loveEvent.setObj(this);
} public void love() {
if (null != loveListener) {
loveListener.loves(loveEvent);
} }
}
...Event类(类似于jdk的ActionEvent):
package listener;public class LoveEvent {
private Object obj = null; public Object getSource() {
return obj.toString();
} public Object getObj() {
return obj;
} public void setObj(Object obj) {
this.obj = obj;
}
}
继承事件源的类(类似于....extends JButton):
package listener;public class Boy extends Person implements LoveListener {
public Boy() {
this.addLoveListener(this);
//触发事件
this.love();
} @Override
public void beLove(LoveEvent e) {
System.out.println("");
} /**
* 监听函数
*/
@Override
public void loves(LoveEvent e) {
System.out.println("你爱上了某人");
System.out.println("你爱上的人是:" + e.getSource()); } public static void main(String[] args0) {
Boy boy = new Boy();
boy = new Boy();
}
}每new 个Boy对像都会触发love事件
比较简单不作多解释,谢谢批评&拍砖
观察者模式(observer)
欢迎楼主去看书
http://apicode.gicp.net/class.do?api=selectByfatherIndex&father=255
http://apicodecn.gicp.net/class.do?api=selectByfatherIndex&father=255