CodeFactory
CodeFactory是一个容器。
1.能够添加流水线,并保证被添加的流水线符合系统定义的流水线的规范。并且它所依赖的组件(生成控制器、引擎、模板)都存在。
2.能够移除流水线,移除的方式有:
1)仅移除流水线本身。
2)同时移除流水线所引用的组件(生成控制器、引擎、模板)。并保证被移除的组件不被其他组件引用。
3.能够添加引擎,并保证被添加的引擎符合系统定义的规范。
4.能够移除引擎,并保证被移除的引擎没有其他组件引用。
5.能够添加生成控制器,并保证被添加的生成控制器符合系统定义的规范。
6.能够添加模板。
7.能够移除模板,并保证被移除的模板不被其他组件引用。
8.流水线、引擎、模板、生成控制器在CodeFactory中都有一个唯一标识符。所有的组件都可以通过唯一标识符向CodeFactory
请求获得对象实例。
9.流水线使用帮助、引擎语法、生成控制器说明的加载、移除、呈现。流水线
流水线是争对指定环境下的代码生成解决方案的封装。
1.负责创建代码生成上下文。
2.负责向CodeFactory请求所需要的模板。
3.负责向CodeFactory请求所需要的生成控制器。
4.负责向CodeFactory请求所需要的引擎。
5.负责将模板、代码生成上下文以及引擎分发给相应的生成控制器。并要求生成控制器执行代码生成动作。
6.负责将所生成的代码保存为文件。引擎
引擎负责解析模板,并将模板与代码生成上下文相互结合(Merge),最终返回半成品/成品 代码。
1.引擎的基本模式有Push、Pull、Mix。同时,引擎的模式也可以自定义。
2.各种不同模式的引擎的输入是固定的,它们必然是代码生成上下文以及模板。区别在于他们的输出。不同模式下的输出各异。
3.Push模式下,引擎负责将代码生成上下文Push进模板中,最终返回成品代码。
4.Pull模式下,引擎负责解析模板内容,并将解析后的模板Pull出来,在生成控制器中作进一步加工,最终输出成品代码。
5.Mix模式下,引擎首先解析模板,并将解析后的模板与代码生成上下文Merge,获得以成员的形式构成的代码。
最后在生成控制器内作进一步加工,最终返回成品代码。(以成员的形式构成的代码能够支撑代码重复生成业务)生成控制器
生成控制器控制代码生成行为。是代码生成的指挥中心。
1.它的输入是代码生成上下文、引擎、模板,输出的是代码内容。
2.它控制引擎分析模板并与代码生成上下文Merge。
3.当引擎输出的半成品代码时,由生成控制器作进一步的加工,获得所需要的成品代码,从这个角度而言,可以把它看作是引擎
功能上的扩展。代码生成上下文
浙公网安备 33010602011771号