news 2026/4/30 8:14:32

ABAP-OO:(3)类的事件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ABAP-OO:(3)类的事件

一、事件是什么(官方严谨定义)

事件是 ABAP 面向对象中,类与类之间实现松耦合通信的机制。

  • 一个类可以定义事件触发事件
  • 其他类可以注册监听这个事件
  • 事件触发后,系统自动调用注册好的处理方法
  • 触发方不关心谁处理,处理方不关心谁触发→ 完全解耦

简单举例:闹钟响起,人”听到“闹钟响起会自动起床;假设定义闹钟类具备闹钟响起的功能,定义人“类”具备起床的功能,那么”听到”则把”闹钟“和”人类“的功能绑定起来,

  • 定义事件:我是一个闹钟,我具备一个功能:某个时间点会响铃(ring)
  • 触发事件:时间到!我响铃了!
  • 注册监听:人准备听到闹钟
  • 响应事件:人听到这个闹钟响,我就起床

二、事件三要素(固定结构)

  1. 触发类:定义事件 + 触发事件(RAISE EVENT)
  2. 处理类:编写事件处理方法
  3. 注册监听:SET HANDLER 绑定事件与处理方法

三、示例

示例代码:

REPORT ztest_alarm_event. *----------------------------------------------------------------------* * 1. 【闹钟类】事件发出者:会响铃 *----------------------------------------------------------------------* CLASS lcl_alarm DEFINITION. PUBLIC SECTION. EVENTS: ring. " 1️⃣ 定义事件:闹钟响了 METHODS: start. " 闹钟启动 ENDCLASS. CLASS lcl_alarm IMPLEMENTATION. METHOD start. WRITE: / '闹钟:时间到!叮铃铃~~~'. RAISE EVENT ring. " 2️⃣ 触发事件(响铃) ENDMETHOD. ENDCLASS. *----------------------------------------------------------------------* * 2. 【人类】事件处理者:听到铃声就起床 *----------------------------------------------------------------------* CLASS lcl_person DEFINITION. PUBLIC SECTION. METHODS: get_up FOR EVENT ring OF lcl_alarm. " 3️⃣ 事件处理方法 ENDCLASS. CLASS lcl_person IMPLEMENTATION. METHOD get_up. WRITE: / '我:听到闹钟,起床上班啦!'. ENDMETHOD. ENDCLASS. *----------------------------------------------------------------------* * 3. 主程序:把它们绑定在一起 *----------------------------------------------------------------------* START-OF-SELECTION. " 创建对象 DATA(lo_alarm) = NEW lcl_alarm( ). DATA(lo_person) = NEW lcl_person( ). " 4️⃣ 注册监听:人监听闹钟 SET HANDLER lo_person->get_up FOR lo_alarm. " 启动闹钟 → 自动响铃 → 人自动起床 lo_alarm->start( ).

运行结果:


四、事件 vs 普通方法调用(为什么要用事件?)

表格

方式耦合度调用关系适用场景
普通方法调用高耦合A 直接调用 B明确知道要调用谁
事件低耦合A 触发,B 监听不知道谁处理、多人处理

事件优势

  • 触发方和处理方互不依赖
  • 一对多通知
  • 代码更易扩展、更符合 Clean Core
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 7:58:28

3分钟免费解密网易云音乐NCM文件:ncmdump完整使用指南

3分钟免费解密网易云音乐NCM文件:ncmdump完整使用指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的加密NCM文件无法在其他设备播放而烦恼吗?今天我要为你介绍一款简单实用的ncmdump…

作者头像 李华
网站建设 2026/4/30 7:58:27

57-0000-13 X 射线管 10KV,1.5mA,15 W,Fe 靶

1. 规格概述型号:57-0000-13(这是一个特定型号标识,可能用于库存或产品分类)。类型:X射线管(一种通过电子轰击阳极靶材产生X射线的真空器件)。关键参数:工作电压:10kV&am…

作者头像 李华
网站建设 2026/4/30 7:47:08

c语言的练习—二维数组的练习(对称矩阵的判定)

对于此道题,所谓对称矩阵,意思就是关于左对角线对称的数字对应相等。那么我们不妨使用我上一次发表的文章的方法来进行规律的寻找。我们不妨使用题目中的第一个例子来举例接下来我以图片的方式呈现出来显然的,我们能够发现这两个三的位置和两…

作者头像 李华