监听器:观察者设计模式

╰半橙微兮° 2022-05-20 08:54 242阅读 0赞
  1. 在学习编程知识的时候,我们知道在编程算法中有很多著名的编程思想,今天我要介绍的就是一种比较著名的编程思想---观察者设计模式思想,我们知道有时候我们需要监听某个对象执行的命令或动作,以方便做出应对,被监听的对象叫做事件源,监听的对象需要实现某个接口即监听器接口,然后在main函数中给当前对象注册一个监听器,完成对监听事件的监听。(个人理解,有什么错误,希望大佬多指教)

代码如下:

1.定义PersonListener接口

package com.nyist.cn.Listener;

public interface PersonListener{
public void dorun(PersonEvent e);
public void doeat(PersonEvent e);

import com.nyist.cn.Model.Person;

public class PersonEvent{
private Person person;

protected Person getPerson() {
return person;
}

protected void setPerson(Person person) {
this.person = person;
}

public PersonEvent(Person person) {
super();
this.person = person;
}

public PersonEvent() {
super();
}
}

}

2.定义监听器的事件

package com.nyist.cn.Listener;

import com.nyist.cn.Model.Person;

public class PersonEvent{
private Person person;

protected Person getPerson() {
return person;
}

protected void setPerson(Person person) {
this.person = person;
}

public PersonEvent(Person person) {
super();
this.person = person;
}

public PersonEvent() {
super();
}

}

3.实体类Person

package com.nyist.cn.Model;

import com.nyist.cn.Listener.PersonEvent;
import com.nyist.cn.Listener.PersonListener;

//使用观察者设计模式 设置监听器
public class Person {

private PersonListener listener;
public void eat(){
if(listener!=null){
this.listener.doeat(new PersonEvent(this));
}
System.out.println(“eat!”);
}

public void run(){
if(listener!=null){
this.listener.dorun(new PersonEvent(this));
}
System.out.println(“run!”);
}

//需要给顶一个监听器对象
public void registerListener(PersonListener listener){
this.listener = listener;
}

}

4.测试类

package com.nyist.cn.Listener;

import com.nyist.cn.Model.Person;

public class ListenerDemo2 {
public static void main(String[] args){
Person p = new Person();
p.registerListener(new MyPersonListener());
p.eat();
p.run();
}
}

class MyPersonListener implements PersonListener{

@Override
public void dorun(PersonEvent e) {
Person p = e.getPerson();
System.out.println(p+”吃过饭,不能跑步!”);
}

@Override
public void doeat(PersonEvent e) {
Person p = e.getPerson();
System.out.println(p+”吃太多,容易造成肥胖!”);
}

}

5.运行结果

com.nyist.cn.Model.Person@15db9742吃太多,容易造成肥胖!
eat!
com.nyist.cn.Model.Person@15db9742吃过饭,不能跑步!
run!

发表评论

表情:
评论列表 (有 0 条评论,242人围观)

还没有评论,来说两句吧...

相关阅读

    相关 监听器观察设计模式

    >         在学习编程知识的时候,我们知道在编程算法中有很多著名的编程思想,今天我要介绍的就是一种比较著名的编程思想---观察者设计模式思想,我们知道有时候我们需要监听

    相关 设计模式-观察模式

    观察者模式也叫订阅发布模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

    相关 设计模式:观察模式

    一.简介 > QT的信号槽就是观察者模式,当事件发生之后(比如按钮被点击)就会发出一个信号,这种信号类似广播没有目的.当对象对信号感兴趣,就会通过 connect() 函

    相关 设计模式--观察模式

    定义 在对象之间定义了一对多的依赖,当一方发生改变时,依赖它的对象都会受到通知并自动更新。 其实可以理解为消息发布者(被观察者)与订阅者(观察者),用户可以订阅或者取消