浏览 438 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2021-08-26
相信对动词算子式代码生成器有印象的人们无不对这类代码生成器的弹性和适应性印象深刻。并好奇是如何做到这一点的。这就是动词算子式代码生成器的的基本原则,为代码生成而设计。这一特性不是偶然的,而是这种代码生成器刻意为之。 对任何软件,管理变与不变总是基本的考虑。对代码生成器而言,这更为重要。因为代码的不变,代码生成器才能有相对固定的设计与实现。因为变,所以代码生成器才能拥有弹性,适应不同的需求与场景。所以,对变与不变不变的管理,是代码生成器设计的核心内容。 对这种需求,关键是为代码生成而设计,什么意思,就是你需要对代码生成器的运行有整体考虑。考虑代码生成器如何变,那里保持不变。具体说来,就是变的集中和不变的集中,所以的变化,被集中于域对象,而不变的,是形形色色的动词算子。 为什么这么设计,首先,这是自然的关系,比如说ListAll动词,即从数据库中返回您需要的数据,您会发现,对不同的ListAll动作,比如ListAllStudents和ListAllTeachers,不同的只是查询的数据库表不同和表征的pojo对象不同。而不同的ListAll动作完成的步骤是完全相同的。而同为Student对象,ListAll动作和Delete动作的步骤的逻辑结构是完全不同的。所以,动词算子式代码生成器只是诚实的归纳和利用了这种逻辑关系。 第二点,动词算子和域对象的笛卡尔积生成具体的方法阵列的方法本质上是一种降维操作。他把一个二维的方法阵列降维为一维的域对象数组和一维的动词算子数组的笛卡尔积。虽然简单,但我确实没有发现更为有效的方式。 第三点,把代码生成器原子化是降低代码生成器耦合的增强它的扩展性的好办法。传统的代码生成器是以文件为单位的。这不是代码的逻辑结构。但却是代码的组织单元。所以,如果要增减功能,以文件单位为中心的代码生成器经常会牵一发动全身。而以动词算子为单位的代码生成器是原子化的,这方面的缺点就不存在了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2021-08-26
代码生成器技术乱弹四十四,动词算子式代码生成器的砖块:域对象
动词算子式代码生成器是一种数据驱动的代码生成体系,而数据,在动词算子式代码生成器中,就是用域对象表征的。 域对象可以通过几个层面来分析。首先,域对象代表了一张数据库表,它的名字,它的字段的名字,和数据库表存在映射关系。 其次,域对象是字段的组合,一个域对象,拥有一系列字段,这是系统中所有需要操作的数据。 再次,域对象是系统中传递数据的POJO对象,这是java应用程序中的标准模式,也是本代码生成器系列的缘起。 然后,域对象是棱柱的钥匙,系统中的所有棱柱,都是对应的域对象生成的。 最后,生成系统的Excel代码模板,除了一些设置的配置页面外,都是描述了域对象和数据域对象,这些信息,描绘了一个动词算子式代码生成器的生成物的所有特征。 所以,域对象是动词算子式代码生成器赖以实现的砖块。 |
|
返回顶楼 | |
发表时间:2021-08-26
|
|
返回顶楼 | |