五、dclass
本来我就在两个关键字之间犹豫,一个是djclass,另一个是dclass。后来想想,还是dclass显得大气一些,也少一个字母呀
dclass UserObj{
key_datatype:
int user_id;
datatype:
User user;
channel:
init UserInitChannel uic;
UserPOJOChannel upc;
relation:
UserForum:right;
GroupUser:left;
}
这样就定义了一个User动态对象。key_datatype与relation的问题,我们下次再说,这次先集中考虑一个dclass中的datatype与channel的定义。
在一个dclass中,只允许定义一个datatype成员,比如User user;。这就是整个UserObj这个动态对象所能管理的内部数据。能够对这些内部数据进行操作的,就是channel中定义的UserInitChannel与UserPOJOChannel。当然,一个dclass中可以定义无数个channel。假设我们需要定义一个channel,处理的内容并非整个user,而是user中的某一个成员变量,则需要如下定义:
UserAddressPOJOChannel<user.address> ua;
以表明,这个channel,处理的是user的地址信息。
熟悉AOP的朋友可能会发现,这样定义的Channel,非常像一个一个的aspect,而我这个动态对象中的channel,与aspect最大的区别是,方面必须依附于某一个具体的对象,甚至只能依附于对象中的某些方法,仅仅在方法被调用时,才得以唤醒。而在dclass里,每一个channel都是平等的关系,相互之间没有任何依附。
熟悉C++的朋友可能也会发现,channel很像Modern C++ Design中Policy-Based Design的一个一个的Policy。的确很像,而channel与policy最大的区别是,channel不借助于多重继承与模板方式的实现,因此也不会受限于“OO中的类型”带来的副作用。channel不是类型,不是数据类型,仅仅是一组操作集合,也可以说是符合“某个contract”的一组操作集合。不存在类型问题,也不存在转型问题。
熟悉mixin和
jam的朋友也会发现,channel几乎实现了mixin和jam能够达到的效果,与MCD相比类似的是,同样没有那些“由型别”而来的副作用。
这样的一个dclass,该如何使用呢?
UserObj uo=dnew UserObj();
UserPOJOChannel u=uo.upc;
u.setName("zbw");
uo.save();
UserObj uo1=dget UserObj(1);
UserPOJOChannel u1=uo1.upc;
System.out.println(u1.getName());
这是最基础的使用方式,dnew操作,会初始化一个UserObj对象,save()操作是任何一个动态对象都天然具有的方法,初始化、load、save、delete等等操作,系统都会自动调用init限定的channel中的相应方法:UserInitChannel。至于这个InitChannel究竟如何处理,我将留在介绍DJ对于持久化的内置支持部分,包含key_datatype,relation一起来介绍。
(未完待续)
分享到:
相关推荐
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
勒索病毒敲响网络安全警钟.pdf
电动汽车给石油公司敲响警钟.pdf
敲响食品安全警钟作文例文.pdf
“断网”敲响网络安全警钟.pdf
小学数学数学故事思维乐趣钟铃敲响
这家研究所的联合创始人Max Tegmark,是来自麻省理工学院的物理学家和人工智能研究员,《生命3.0在人工智能时代成为人类》一书的作者。 他正是带头公开信呼吁暂停 6 个月训练GPT-4等大型 AI 实验的关键人物。 在最新...
梅州污水事件敲响PCB行业警钟.pdf
敲响防火警钟的五大措施方案.docx