java观察者模式6,JAVA设计模式(6)--观察者(监听),Observer,观察者模式

本文通过一个生动的例子介绍了监听设计模式的实现方式。该模式主要包括事件、事件源和监听者三部分,通过具体代码展示了程序员作为事件源触发事件,以及不同角色的监听者如何响应这些事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习了一下设计模式,怕忘记了,写个总结,也好常复习一下。

监听设计模式要包含几个重要的部分:

1、事件

2、事件源

3、响应事件的监听者

就拿下面的图片来解释一下

0_13171904067N7c.gif

如图所示的,后面站着的肯定是监听者了,监听着敲代码这个事件,而程序猿就是那个敲代码的事件源

public class Main { /** * @description 测试 */ public static void main(String[] args) { Programmer pro = new Programmer();//生成一个事件源对象,将要做事情 pro.addListener(new PM());//增加监听者 pro.addListener(new Director());//增加监听者 pro.addListener(new Chief());//增加监听者 pro.updateCode();//程序猿去修改代码 } } abstract class ActionEvent{ } /** * @description 编程事件 * */ class Code extends ActionEvent{ //这个事件的属性是敲打代码、修改代码、处理时间等等... private boolean beat=true;//默认敲代码 private boolean update=true;//默认修改代码 private long time; public boolean isBeat() { return beat; } public void setBeat(boolean beat) { this.beat = beat; } public boolean isUpdate() { return update; } public void setUpdate(boolean update) { this.update = update; } public long getTime() { return time; } public void setTime(long time) { this.time = time; } } /** * * @description 程序员要根据编程事件的属性进行操作 * */ class Programmer{ //程序猿被n个人监听着 private List list = new ArrayList(); public void addListener(ActionEventListener ael){//程序猿的监听者们,要同意别人监听才行 list.add(ael); } ActionEvent e = new Code(); //需要修改时,程序猿进行修改操作 public void updateCode(){ if(((Code) e).isUpdate()){//如果是真,则需要进行修改 System.out.println("程序猿修改代码"); //监听者们的做法 for(int i = 0 ; i < list.size();++i){ ActionEventListener a = list.get(i); a.actionPerformed(e); } } } } interface ActionEventListener{ public void actionPerformed(ActionEvent e); } class PM implements ActionEventListener{ @Override public void actionPerformed(ActionEvent e) { System.out.println("修改完代码后,项目经理说,那里还不行,缺个分好;"); } } class Director implements ActionEventListener{ @Override public void actionPerformed(ActionEvent e) { System.out.println("修改完代码后,运营总监说,你没做出我想要的感觉"); } } class Chief implements ActionEventListener{ @Override public void actionPerformed(ActionEvent e) { System.out.println("修改完代码后,总经理说,再做几个方案!给我选"); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值