package cn.lnu.listener;
//�۲������ģʽ��Observer���ģʽ����demo1����ʾ�����������¼������Ϸ����ļ����¼�������ֻ��Ҫд�¼��������༴��Ȼ��ע����¼�Դ��
//Ҳ����˵demo1����ʾ�Լ�д����������ȥ�������˵Ķ����Ϸ�������Ϊ�������demo2����ʾ�����Լ����һ���¼������뱻���˼����������Ҫʹ�ù۲������ģʽ��
class Person{//����˵���һ������Ҫ�����˼���,Ҳ����������������������������������Ҫ�����˼�����������Ҫ��������������������ע��һ��������
private PersonListener listener;//����һ��������ס���ݽ������¼�������
public void run(){
if(listener!=null){//�ж��˼���û�д��ݼ������������紫�ݽ�����,���ڵ���run����֮ǰ���ȵ����¼��������Ķ�Ӧ�����ȴ��������������
Event e=new Event(this);
this.listener.dorun(e);
}
System.out.println("run");
}
public void eat(){
if(listener!=null){
Event e=new Event(this);
this.listener.doeat(e);
}
System.out.println("eat");
}
public void registerListener(PersonListener listener){//��������������������ע��һ���������������˵����������������¼�����������������¼�Դ������õģ�֮���¼�Դ����������������¼��������ķ�����������ǻ���Ҫ���Ⱪ¶һ���ӿ�
this.listener=listener;
}
}
/*����������ϵ����������뱻�˼������Ͷ��Ⱪ¶һ�����Ӧ�Ľӿڣ�������Ҫ�������������Ҫʵ������ӿڣ����൱�ڴ���һ����������Ȼ���ڸö�����ע����ʵ������ӿڵ��¼���������
* �����������ע�������֮�����������ͻ��ڴ�����Ӧ�ķ���֮ǰ��ȥ���ü������ķ������д���Ȼ����ȥ�������������ķ�����
* */
interface PersonListener{//����ʵ������ӿڣ����൱��д�˸��¼�������
public void dorun(Event e);
public void doeat(Event e);
}
//�������һ���¼�������Ҫ���ڷ�װ�¼�Դ
class Event{
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public Event() {
super();
// TODO Auto-generated constructor stub
}
public Event(Person person) {
super();
this.person = person;
}
}