随机名言

监听器模式



javaWeb中的Listener中涉及到了监听器模式,所以回来补充一下


1. 监听器模式(Listener Pattern)

监听器模式用来监听某个对象发生的事件,当此对象发生被监听的事件后,监听器的某个方法将被执行,其主要组成有: 事件源事件监听器事件对象



2. 流程

监听器模式很简单,直接看代码就能理解,这里举例监听小狗的玩和学习事件


2.1 事件对象

public class Event {

	// 存放事件源的引用
	Object object;

	public Event(Object object) {
		super();
		this.object = object;
	}

	public Object getObject() {
		return object;
	}
	
}


2.2 事件监听器

狗的监听器接口

public interface DogListener {
	
	public void playListener(Event event);
	
	public void studyListener(Event event);

}

狗监听器的实现类

package listenerpatten;

public class MyDogListener implements DogListener {

	@Override
	public void playListener(Event event) {
		System.out.println("监听器:监听到" +  event.getObject().getClass().getName() + "在玩");
	}

	@Override
	public void studyListener(Event event) {
		System.out.println("监听器:监听到" +  event.getObject().getClass().getName() + "在学习");
	}

}



2.3 事件源

public class Dog {
	
	private MyDogListener myDogListener;
	public void setDogListener(MyDogListener myDogListener) {
		this.myDogListener = myDogListener;
	}

	public void play(){
		System.out.println("Dog: i am playing");
		Event event = new Event(this);
		myDogListener.playListener(event);
	}

	public void study(){
		System.out.println("Dog: i am studying");
		Event event = new Event(this);
		myDogListener.studyListener(event);
	}
}


2.4 测试类

public class test {
	
	public static void main(String[] args) {
		
		Dog dog = new Dog();
		MyDogListener myDogListener = new MyDogListener();
		dog.setDogListener(myDogListener);
		
		dog.play();
		dog.study();
		
	}
}
Dog: i am playing
监听器:监听到listenerpatten.Dog在玩
Dog: i am studying
监听器:监听到listenerpatten.Dog在学习


posted @ 2020-02-18 12:20  Howlet  阅读(174)  评论(0编辑  收藏  举报

Copyright © By Howl