六、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
随着新年的钟声敲响,我们迎来了一年之初的开门红,这不仅是一个时间节点的象征,更是一个充满希望与机遇的开始。在这样的背景下,2013年,我们公司选择以一场盛大的年会来庆祝这一历史性的时刻,而“2013开门红——...
在当前数字化时代,浏览器已成为人们日常生活中不可或缺的一部分。从简单的网页浏览到复杂的在线交易,浏览器承担着数据传输、应用运行和信息交互的重要任务。然而,随着网络攻击手段的日益翻新,浏览器安全问题也日...
新时代的钟声已然敲响,它不仅代表着时间的流转,更是历史发展的一个崭新起点。我们生活在一个充满变革与机遇的时代,而“奋进新时代,争做追梦人”不仅仅是一句口号,它更是一种行动的指南,一种精神的宣言。在这篇...
疫情改变了人们的日常生活习惯,出门必戴口罩成为了一种新的社交礼仪,街道上行人稀少,商业活动也受到了极大的限制。学生们的学校生活转变为网络授课,与老师和同学的面对面交流被电子屏幕所取代。这种变化不仅仅是...
提到的“丧钟为谁而鸣”,这句话源自约翰·多恩的诗句,意味着每个人的死亡都是所有人的损失,每个人都在为自己的死亡敲响丧钟。在这里,读者被提醒珍惜当下,因为生命无常,每一刻都可能是最后的时刻。同时,这也...
化工行业:敲响轮胎消费时代的钟声!(30页).pdf
化工行业:敲响轮胎消费时代的钟声!(2021)(30页).pdf
这种现象不仅反映了社会对于弱势群体的冷漠态度,更是对人性的一种扭曲。在这个案例中,IT技术,尤其是社交媒体,成为了传播和消费他人痛苦的工具。这不仅是对个人尊严的侵犯,也是对社会道德伦理的挑战。 这两部分...
《地球——我们的家园》是教育学生认识地球独特性和环保重要性的关键课程。这一课时的教学设计旨在通过多种教学策略,使学生对地球的唯一性有深入理解,提高他们对环境保护的认识,培养珍视地球家园的情感。 教学...
随着元旦钟声的敲响,我们迎来了崭新的一年——2014年。在这个欢乐祥和的节日里,向亲朋好友发送一份温馨的祝福短信,已成为现代人际交往中不可或缺的一部分。这不仅是对传统文化的一种继承,更是现代数字时代特有的...
《传统文化的继承与弘扬——社会实践活动调查报告》深入探讨了这一主题,并对如何在新时代背景下保持和发扬传统文化提出了见解。 报告指出,当前全球化趋势下,中国传统文化面临种种挑战。西方节日文化的流行和渗透...
在这个特殊的时刻,我们设计了一份特别的语言学习教案——《大班语言新年礼物学习教案》,目的是利用新年的喜庆氛围,激发孩子们对语言学习的兴趣,同时提升他们的语言表达、故事理解及情感交流技巧。 教案以新年这...
回顾往昔,2012年武汉“9·13”施工电梯事故的惨痛教训至今让人记忆犹新,该事件中操作不当导致的人员伤亡给整个建筑行业敲响了警钟。事故的背后暴露出一个共同的问题:非专属司机的操作隐患。在正常施工过程中,...