观察者模式

观察者模式

参考:

java.awt.event.KeyListener

KeyListener 会根据我们键盘按下抬起触发事件 方法上有封装好的Event类封装了按键时的信息

图解:

Code:

import java.util.ArrayList; import java.util.List; //测试 public class Main { public static void main(String[] args) { new Child().wakeUp();} } //抽象获取源对象的类 abstract class Event<T>{ abstract T getSource(); } //小孩醒的事件类 class WakeupEvent extends Event<Child>{ long timestamp; String location; Child source; public WakeupEvent(long timestamp, String location,Child source) { this.timestamp = timestamp; this.location = location; this.source = source; } @Override Child getSource() { return source; } } //观察者接口 interface Observer{ void actionOnWakeup(WakeupEvent wakeupEvent); } //事件源对象 小孩 class Child{ boolean cry = false; List<Observer> observerList = new ArrayList<>(); { observerList.add(new Dad()); observerList.add(new Dog()); } public void wakeUp(){ System.out.println("child wakeup! wuwuwuwuuwuw..."); cry = true; for (Observer observer : observerList) { observer.actionOnWakeup(new WakeupEvent(System.currentTimeMillis(),"bad",this)); } } } //观察者 Dad class Dad implements Observer { public void feed(){ System.out.println("Dad feed !!"); } @Override public void actionOnWakeup(WakeupEvent wakeupEven) { //可以拿到是谁发出的事件 Child source = wakeupEven.getSource(); System.out.println("child status: " + source.cry); feed(); } } //观察者Dog class Dog implements Observer { public void call(){ System.out.println("Dog wawawaw !!"); } @Override public void actionOnWakeup(WakeupEvent wakeupEven) { call(); } }

__EOF__

本文作者Immortal-mode
本文链接https://www.cnblogs.com/immortal-mode/p/14375569.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   immortal_mode  阅读(77)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示