六、event
event这个概念,可以说是我的DJ语言中,最为核心的概念。因此值得细细道来。我之所以要敲响OO时代的丧钟,最大的一个原因,就是Object是静态封装的。为了“保证数据的安全”,面向对象从“抽象数据类型”一步步发展而来,带来了无数的问题,引发了重重的困难,大多数的对于OO的批评与改进,都很少触及这个根源,也很少想过打破对象封装这样的事情,直到近年来出现的AOP、Mixin以及越发强大的各种动态语言,开始来做这方面的努力。而这些技术和语言,在试图打破封装的时候,做得并不彻底,往往还是“从OO的基本语义出发,做一些有益的补充”。而我的打算则是,彻底反思封装的意义,然后采用一种新的机制来代替静态封装的OO技术。
数据要保护,不能被胡乱访问。这个道理很大,但是真的要“不允许任何对象之外的访问企图”吗?只有静态封装,才能保证数据安全吗?其实要保证数据安全,并不需要做得那么“决绝”。我们假设这样一个场景,一个房子里有很多财宝,这些财宝有两种管理方式,一种我称之为“地窖式”看守,只有一个人有钥匙,他可以进出地窖。另一种我称之为“银行式”管理,每个人都可以进出银行,只要他的行为合法就行了。
当然,管理一个银行的难度要远远超过看守一个地窖。但是,银行能够带来的利益与价值,是地窖根本无法想象的。那么如何来管理一个“银行”呢?
一个银行有很多人员进出,各自可以做各自的事情,当他们之间的行为互相没有影响的时候,一切都好说,但是如果一个人A的行为有可能影响到另一个人B的行为,那么B就应该知道,某某事件即将发生,以及某某事件已经发生过了。然后他可以决定自己是否做出相应的反应。这在DJ中,就表现为各个Channel,需要声明自己关心的事件。
在一个dclass中,可能发生的事件包括以下几种:
1、AddChannel:新加入了一个Channel
2、RemoveChannel:移除了一个Channel
3、RejectChannel:一个Channel被挤出
4、InitObject:初始化动态对象
5、ReadData:读取某个数据
6、WriteData:修改某个数据
7、AddData:新增数据
8、RemoveData:移除数据
9、CallMethod:某个Channel中的某个方法被调用
所有这些可能的事件,都可以再分为Before与After两个事件。在一个Channel定义中,channel可以表明自己所关心的事件:
channel UserLogChannel{
......
event onAddChannelEvent *
channelEventLog(Event e){
log.write(e.toString());
}
}
这就表明UserLogChannel这个Channel,关心所有新加入channel的事件。
如果我们将事件声明写成:
event onChannelEvent *
就是关心所有Channel进出相关的事件。
如果写成:
event onEvent *
自然就是关心所有事件了。
如果写成:
event onChannelEvent UserPOJOChannel
就是关心UserPOJOChannel这个channel的进出相关事件了。
event声明类似于比较case语句。就像
case 1:
case 2:
doSomething();
这样的语句,就说在1、2两种情况下,都由doSomething来处理一样。event也可以将多个事件交给同一个方法来处理。今天先初步介绍以下event的语法,至于这样的语法,能够做到写什么事情,我们明天再说吧。
(未完待续)
分享到:
相关推荐
20210509-信达证券-化工行业:敲响轮胎消费时代的钟声!.pdf
图片购物搜索淘淘搜:敲响美丽说们的丧钟?.docx
化工行业:敲响轮胎消费时代的钟声!.pdf
化工行业:敲响轮胎消费时代的钟声!(30页).pdf
化工行业:敲响轮胎消费时代的钟声!(2021)(30页).pdf
Window操作系统的诞生成就了微软帝国,同时也造就了PC时代的繁荣,然而如今,以Android和iPhone手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了PC时代的丧钟!这也预示着移动互联网时代(3G)已经来临。 ...
有一种爱,迟了就无法再来,有一种情走了就无法追溯…… ——题记 卷子上那89分的分数沉重的打击着我的心灵,太阳渐渐落下,山来,我走在回家的路上。泪水充满了我的眼眶。夕阳在我的眼中变得扭曲模糊,我把脚步放到...
敲响希望的警钟-读《小学生时代》有感1200字_小学生读后感精选.doc
的智能移动设备的发明却敲响了PC时代的丧钟!移动互联网时代(3G时代)已经来临,谁会成为这些移动设备上的主 宰?毫无疑问,它就是Android——PC时代的Windows! 移动互联网还是一个新生的婴儿,各种移动设备上...
然而,以android和iphone手机为代表的智能移动设备的发明却敲响了pc时代的丧钟!移动互联网时代(3g时代)已经来临,谁会成为这些移动设备上的主宰?毫无疑问,它就是android——pc时代的windows! 移动互联网还是...
"地球——我们的家园 教案(教学设计)" 本教案旨在帮助六年级学生初步养成珍惜地球资源、保护地球环境的行为与习惯,了解地球是目前已知的惟一有生命存在的、适宜人类生存和发展的星球。通过教学,学生能初步归纳...
电子行业深度报告:5G对电子板块的影响研究(二):PCB设备已经敲响的5G投资时钟.pdf
航运网络安全敲响警钟.pdf
”和“让二十一世纪那已经能够听到的脚步声为战争敲响丧钟,让明天的世界真正成为充满阳光、鲜花和爱的人类家园!”等语句的朗读,要达到本文情感的高潮。 教学方法: 1. 观看图片,进入情境。要让学生能体会作者...
勒索病毒敲响网络安全警钟.pdf
电动汽车给石油公司敲响警钟.pdf
敲响食品安全警钟作文例文.pdf
“断网”敲响网络安全警钟.pdf
小学数学数学故事思维乐趣钟铃敲响
这家研究所的联合创始人Max Tegmark,是来自麻省理工学院的物理学家和人工智能研究员,《生命3.0在人工智能时代成为人类》一书的作者。 他正是带头公开信呼吁暂停 6 个月训练GPT-4等大型 AI 实验的关键人物。 在最新...