四、channel与contract
如果我们要对UserChannel进行校验,可以在两个层面进行。
一个是每个方法,都可以写check:与test:。
另一个是在整个channel层面,还可以再写同时牵涉到多个方法的test:。
channel UserChannel<datatype User user>{
public String getUserName(){
return user.name;
check:
......
test:
........
}
public void setUserName(String name){
user.name=name;
check:
......
test:
........
}
public int getAge(){
return user.age;
check:
......
test:
........
}
public void setAge(int age){
user.age=age;
check:
......
test:
........
}
这个channel里的check和test部分我都以省略号代替了,实在是找不到校验他们的理由
但是我希望通过这个例子,向大家显示,DJ是一个极其重视check、test的语言,在每一级,都可以有直接的、语法支持的校验。
如果我们定一个完全空的channel,只有各个方法定义与check,test部分,这就意味着我们定义了一个“合约”。我们以关键字contract来表示对于合约的定义。也许有人会说:“你这不就是interface吗?为什么又要新搞出一个关键字呢?”,在我看来,在java中interface最大的用处,就在于他具有初步的DBC的效果,而interface的缺点,就在于无法在使用过程中,与某一个class所定义的类型所区分。因此,我另外定义一个“纯粹的,定义操作合约的语法元素——contract”。
contract UserPOJO<datatype User user>{
public String getUserName(){
check:
......
test:
........
}
public void setUserName(String name){
check:
......
test:
........
}
public int getAge(){
check:
......
test:
........
}
public void setAge(int age){
check:
......
test:
........
}
在以这样的方式定义了UserPOJO这个contract之后,我们再来写UserChannel,就可以少写很多东西了。
channel UserChannel<datatype User user>:UserPOJO{
public String getUserName(){
return user.name;
}
public void setUserName(String name){
user.name=name;
}
public int getAge(){
return user.age;
}
public void setAge(int age){
user.age=age;
}
}
注意这红颜色的部分,这样的定义就意味着,UserChannel的行为,符合UserPOJO所限定的操作语义。channel UserChannel<datatype User user>:UserPOJO,ExtendUser。如果我们这样定义,就意味着UserChannel需要同时满足两种不同的“合约”。
在定义contract的时候,可以省略<datatype User user>部分,这就意味着,处理不同数据的channel,可以满足同样的“contract”定义,这样也为DJ需要的定义操作多态,打下了基础。
另外,contract的定义,也是可以“代码重用”的。一个contract,可以引用另一个contract定义,以减少自己的工作量。引用的方法,也是“冒号”。
(未完待续)
分享到:
相关推荐
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
一封呼吁暂停大模型研究6个月的公开信让一家名为未来生命研究所(Future of Life Institute 简称:FLI)站上了风口浪尖。 这家研究所的联合创始人Max Tegmark,是来自麻省理工学院的物理学家和人工智能研究员,...
勒索病毒敲响网络安全警钟.pdf
电动汽车给石油公司敲响警钟.pdf
瑞信-全球-股票策略-全球股市主题:中断—敲响每个人的门-6-74页.pdf
敲响食品安全警钟作文例文.pdf
“断网”敲响网络安全警钟.pdf
小学数学数学故事思维乐趣钟铃敲响
梅州污水事件敲响PCB行业警钟.pdf