リスニングの原理---カスタムリスニング--例


ClassMain.java
package test.listener;

public class ClassMain {

	public static void main(String[] args) {
		
		Student s = new Student(" ");
		
		s.addListener(new StudentListener(){
			@Override
			public void reg(StudentEvent event) {
				Student s = (Student)event.getSource();
				System.out.println(s.getName()+" ");
			}
		});
		
		s.method();
	}
}

StudentListener.java
package test.listener;

public interface StudentListener {

	void reg(StudentEvent event);
}

StudentEvent.java
package test.listener;

public class StudentEvent {

	private Object obj;

	public StudentEvent(Object obj) {
		this.obj = obj;
	}

	public Object getSource() {
		return obj;
	}
}

Student.java
package test.listener;

public class Student {

	private String name;
	private StudentListener listener;

	public Student(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void addListener(StudentListener listener) {
		this.listener = listener;
	}

	public void method() {
		listener.reg(new StudentEvent(this));
		System.out.println(name + " ");
	}
}