六、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
【标题解析】:“图片购物搜索淘淘搜:敲响美丽说们的丧钟?”指的是新兴的电商搜索工具“淘淘搜”通过创新的图片购物搜索功能,对以美丽说、蘑菇街为代表的图片购物网站构成潜在的竞争威胁。 【描述概要】:文章...
化工行业:敲响轮胎消费时代的钟声!.pdf
提到的“丧钟为谁而鸣”,这句话源自约翰·多恩的诗句,意味着每个人的死亡都是所有人的损失,每个人都在为自己的死亡敲响丧钟。在这里,读者被提醒珍惜当下,因为生命无常,每一刻都可能是最后的时刻。同时,这也...
化工行业:敲响轮胎消费时代的钟声!(30页).pdf
化工行业:敲响轮胎消费时代的钟声!(2021)(30页).pdf
《地球——我们的家园》是教育学生认识地球独特性和环保重要性的关键课程。这一课时的教学设计旨在通过多种教学策略,使学生对地球的唯一性有深入理解,提高他们对环境保护的认识,培养珍视地球家园的情感。 教学...
7. 时代与个人:每个人都是时代的一部分,即使是最微小的角色也能在关键时刻发挥重要作用。这体现了每个个体在大时代背景下的价值和责任。 总的来说,这篇读后感不仅呈现了疫情期间的现实情况,也展现了人们在困境...
Window操作系统的诞生成就了微软帝国,同时也造就了PC时代的繁荣,然而如今,以Android和iPhone手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了PC时代的丧钟!这也预示着移动互联网时代(3G)已经来临。 ...
有一种爱,迟了就无法再来,有一种情走了就无法追溯…… ——题记 卷子上那89分的分数沉重的打击着我的心灵,太阳渐渐落下,山来,我走在回家的路上。泪水充满了我的眼眶。夕阳在我的眼中变得扭曲模糊,我把脚步放到...
《地球——我们的家园》是部编版六年级下册道德与法治课程中的第四课,旨在教育学生认识地球作为人类生存环境的重要性,理解人与自然之间的相互依存关系,以及环境问题的严重性,培养学生的环保意识和责任意识。...
后端服务云是一种服务模型,它为Web和移动应用开发者提供了一种方式,将应用与后端云存储连接起来,同时提供了用户管理、推送通知、社交媒体集成等功能。这一模式通过使用定制的软件开发工具包(SDKs)和应用程序...
然而,以android和iphone手机为代表的智能移动设备的发明却敲响了pc时代的丧钟!移动互联网时代(3g时代)已经来临,谁会成为这些移动设备上的主宰?毫无疑问,它就是android——pc时代的windows! 移动互联网还是...
"地球——我们的家园 教案(教学设计)" 本教案旨在帮助六年级学生初步养成珍惜地球资源、保护地球环境的行为与习惯,了解地球是目前已知的惟一有生命存在的、适宜人类生存和发展的星球。通过教学,学生能初步归纳...
划线句采用了排比的修辞手法,强调了战争对家庭的破坏,并提出“一起一致”行动,维护和平,阻止战争,为21世纪敲响和平的丧钟。这表达了作者对和平的深切期盼,以及希望全世界共同反对战争的愿望。 四、表达和平...
此外,烟花的美丽瞬间与新年钟声的敲响相结合,象征着辞旧迎新,寓意着新的希望和开始。文中提到的新年倒计时和烟花的同步绽放,强化了这一寓意,展现出人们对新的一年的美好祝愿和期盼。 最后,烟花的余韵——降落...
【标题】"facemix:人们敲响"指的是一个名为"facemix"的项目,这个项目似乎与表情包相关,特别的是它涉及到人们敲响的场景,这可能是指一种特殊的表情或动态效果,用于表达特定的情感或者情境。在IT行业中,表情包是...
新学期的钟声已经敲响,我们带着假期的回忆与新的期望,站在了这个充满挑战与机遇的新起点上。今天,我想与大家分享几个关于新学期、新气象、新目标的重要观点。 首先,我们要明确,新学期意味着新的开始,无论过去...
【新概念英语第三册课文】是一本针对英语学习者提升语言能力的教材,旨在通过丰富的篇章和主题,帮助学习者增强阅读理解、听力、口语和写作技能。本册教材尤其适合有一定英语基础的学员,旨在进一步拓展词汇量,提高...
标题和描述中提到的核心知识点主要围绕电动汽车的发展对石油公司的影响展开。随着电动汽车技术的进步和市场需求的增长,石油...石油公司必须调整战略,适应这个由电动汽车引领的新时代,同时也为应对气候变化做出贡献。