`

X-gen PPT下载——《研磨设计模式》 实战

 
阅读更多

X-gen项目背景

 

nX-gen项目背景

  很多做应用项目的朋友都会有这样的感觉:项目越来越大,模块越来越多,但是大多数都是重复或者相似的做法,至少每个模块的基础部分的实现是差不多的,比如CRUD(增删改查)功能的实现,又比如翻页功能的实现等等。

  因此,很多朋友都在想办法解决这个问题,如何能够减少这些重复劳动,让自己把有限的时间和精力投入到具有创意或挑战的功能实现上。

  很快地,大家便根据自己的需要,结合公司已有的系统架构和公共功能,制作出了符合自己需要的小应用,可以实现根据配置文件或者是数据库定义来生成应用模块,并带上增删改查的功能实现。

  一切看起来是那么完美,从此不需要再去写每个模块的基础部分了,可以根据配置或数据库定义来生成这些基础部分,然后在此基础之上,进行业务功能的开发就可以了。

  通常这种程序,由于是公司内部专用,因此会实现得非常简单,很多复杂多变的状况也就不再去考虑了,只要满足自己的需要即可。

 

n面临的问题

1:如果生成的配置文件需要发生变化:那么相应的读取配置文件的程序需要变化;同时使用这些数据的程序也需要变化

2:如果模板文件需要发生变化:那么读取模板文件的地方需要发生变化,同时,运行中把参数数据设置到模板的程序也需要发生变化

3:如果调用逻辑或调用顺序需要发生变化:那就需要修改调用部分的程序来适应新的变化

4:如果输出格式需要发生变化:那就只好重新写代码来实现新的输出格式

 

  类似这样的问题还有很多,这里就不一一列举了。

  由于很多这样公司内部使用的工具型应用,是按照公司现有的开发模式来实现的,大都实现得非常简单和僵硬,对于这些变化适应能力是非常差的。

  而上述这些变化,是经常发生的,因此,很多公司都会有人专门负责维护这样的内部应用,不断更改这些程序来适应新的应用的需要。但由于生成的调用过程、生成配置、生成模板以及最后生成等功能是搅和在一起的,因此改动起来非常困难。

 

nX-gen出场

  因此我们需要一个项目,来把生成应用的核心部分独立出来,形成公共的应用,让变化的部分从应用中分离出来,让程序人员可以根据需要进行配置和扩展,从而适应各种应用的需要。

  X-gen就是这样一个应用。X-gen分成两个部分,一个部分是核心框架,用来实现生成应用的公共部分;另外一个部分就是自定义模板部分,按照程序人员的需要来制定模板,几乎所有能重复使用的功能都可以通过X-gen生成,没有什么使用限制。

 

nX-gen系统整体功能概述 

  x-gen是一个能按照模板和配置去生成结果的通用框架,设计精巧,结构灵活,平台开放,支持模板自定义,支持配置方式自定义,支持生成方式自定义,甚至可以自定义generate的过程。

  X-gen的核心是一个通用的生成调用框架,本身并不约定任何需要生成的东西,因此几乎可以满足所有朋友的各种generate需求。

  x-gen首先要解决根据什么来生成的问题;其次要解决如何生成的问题,同时还要解决在生成的时候如何利用外部主题的问题;然后要解决生成结果的问题,包括最终生成成为什么格式,以及把结果输出到什么地方等问题。

 

n配置管理(genconf)功能概述

  x-gen是按照配置来generate的,配置管理模块主要完成:获取用户配置的数据、缓存用户配置的数据 、并对外提供访问这些数据的接口等功能。

  X-gen是一个通用的框架,它本身并不固定要求配置的格式,也不要求配置的来源,因而它也不固定获取和解析配置数据的程序。虽然x-gen默认提供了对xml配置的支持,但可以通过注册新的provider来提供对新的配置方式的支持。

  x-gen可以完全由开发人员自己来制定配置的方式、配置的地方、配置的格式,以及如何获取这些配置数据,如何解析这些配置数据等。并能够以很简单的方式插接到x-gen的核心框架中。

 

n分发调度(dispatch)功能概述

  分发调度提供接受用户请求的入口,然后根据用户请求的内容,去获取相应的配置数据,获得户配置的数据过后,就按照配置的要求来发出命令,要求按照这些配置数据来完成generate的功能。

  在每一个具体命令的实现中,先动态组合需要完成的generate的功能,然后就把这些功能交给generate的代理去完成。

  也就是说分发调度只是负责接收用户的任务,然后把任务组合好,最后分配出去,只是起到一个调度的作用,本身并不处理用户的请求功能。

 

n生成代理(genproxy)功能概述

  生成代理是一个介于生成调度(dispatch)和真正生成(geninvocation)之间额外的附加层,目的是能够根据需要切换不同的代理,比如生成调度根据配置,需要通过远程来生成,那么就需要远程代理,远程访问的方式可能是rmiwebservice等等

 

n具体调用(geninvocation)功能概述

  这个模块实现一个具体生成功能的调用过程,通常是把用户配置的参数数据,按照一定的规则与theme的模板相结合,从而得到需要生成的结果,然后把结果输出出去的过程。

n模板管理(template)功能概述

  模板管理的功能就是负责获取相应的模板数据,并对这些模板的数据进行管理,在外部需要这些模板数据的时候,可以访问模板管理提供的接口来获取。

n生成输出(output)功能概述

  具体调用运行完成后,会产生generate的结果,这些结果如何输出?输出到什么地方?输出成为什么格式等等问题,都由生成输出来负责。

  生成输出本身并不固定任何的输出要求,开发人员完全可以在外部来定义输出的格式,输出的地方,以及如何输出等,只需要在theme的配置中注册新的outtype即可。目前x-gen提供了最简单的输出成为普通文本类型的文件的功能。

 

n什么是外部主题(theme

  所谓theme,就是一套用于生成的模板及其相应程序和配置。由于模板的配置会有很多个,通常会把多个相关的模板组合在一起,统称为主题,也就是theme,今后我们就不说模板了,而是说x-gen根据主题/theme来生成。。

 

n外部主题功能概述

  外部主题是独立于x-gen核心框架之外的,完全由开发人员根据需要来制定,通常里面会包含generate所需要的所有原始模板文件,跟模板文件对应的解析和生成的辅助程序,生成处理的Action处理程序,还有theme的配置文件,一般这几个是必不可少的;其次是根据需要,由开发人员扩展的功能,比如:在进行生成处理前后需要额外添加的功能,自定义的输出类型等等。

  外部主题决定了按照什么来生成、如何生成以及生成成为什么东西的具体信息,是提供给x-gen核心框架使用的重要数据。 

 

 

 

6
1
分享到:
评论
6 楼 zfcejb 2015-03-09  
你好,这X-gen有源码参考吗
5 楼 hbbbs 2013-04-30  
   看介绍 挺美的!
4 楼 jenmhdn 2013-04-30  
即这个是综合运用设计模式的
3 楼 jenmhdn 2013-04-30  
很值得一看
2 楼 jenmhdn 2013-04-30  
x-gen的实现思路
1 楼 jenmhdn 2013-04-30  
ppt里有23个设计模式的ppt

相关推荐

    设计模式综合项目实战X-Gen生成器 PPT

    设计模式综合项目实战X-Gen生成器 PPT

    protoc-gen-go与protoc-gen-go-grpc插件

    标题中的"protoc-gen-go与protoc-gen-go-grpc插件"是指Google开源的Protocol Buffers(protobuf)生态系统中的两个关键工具,它们是为Go语言设计的编译器插件。Protocol Buffers是一种序列化协议,它允许数据以高效...

    X-gen代码生成框架PPT及工程代码

    在提供的资源中,"X-gen代码生成框架PPT" 讲义可能是对X-gen框架的详细介绍,包括它的设计理念、核心功能、使用方法以及优势等。这部分内容可能会涵盖以下知识点: 1. **设计理念**:X-gen可能基于“DRY”(Don't ...

    protoc+protoc-gen-grpc-java

    在Java环境下使用gRPC时,需要对.proto文件进行编译,生成服务端和客户端的存根代码,这正是`protoc`和`protoc-gen-grpc-java`工具的作用。 `protoc`是Protocol Buffers的编译器,它能够读取.proto文件并生成对应...

    protoc-gen-grpc-java-1.9.1-windows-x86_64.exe

    protoc-gen-grpc-java-1.9.1-windows-x86_64.exe

    开源项目-lyft-protoc-gen-validate.zip

    【开源项目-lyft-protoc-gen-validate】是一个在IT领域中非常有价值的工具,尤其对于那些使用Protocol Buffers(简称protobuf)进行数据序列化的开发者来说。protobuf是由Google开发的一种高效的数据序列化协议,...

    黑苹果一键生成工具OC-GEN-X 0.7.7

    "黑苹果一键生成工具OC-GEN-X 0.7.7"是一款专为MOCOS系统用户设计的软件,主要用于简化在非Apple硬件上安装 macOS 操作系统的流程,也就是我们通常所说的“黑苹果”(Hackintosh)搭建。MOCOS是Mac OS的非官方克隆...

    protoc.exe AND protoc-gen-go.exe.rar

    标题中的"protoc.exe AND protoc-gen-go.exe.rar"表明这是一个包含了两个关键工具的压缩包:protoc.exe和protoc-gen-go.exe。这两个工具在IT领域,尤其是开发使用Protocol Buffers(protobuf)的项目时非常关键。 ...

    protoc-gen-go.exe和protoc.exe

    在IT行业中,`protoc-gen-go.exe` 和 `protoc.exe` 是两个非常重要的工具,特别是在Golang(Go语言)的开发环境中。这两个工具与Protocol Buffers(简称protobuf)紧密相关,protobuf是一种高效的数据序列化协议,由...

    Go-gen-类型驱动的Go代码生成工具

    《Go-gen:类型驱动的Go代码生成工具深度解析》 在Go编程语言的世界里,代码生成工具能够极大地提高开发效率,减少重复工作,确保代码一致性。"Go-gen"就是这样一款强大的工具,它以类型驱动的方式生成Go代码,帮助...

    protoc-gen-grpc-java-1.40.0-osx-aarch_64.exe

    protoc-gen-grpc-java-1.40.0-osx-aarch_64 mac arm芯片平台grpc生成java的支持。官网上面没有,这是基于源码编译生成的。 pom.xml:(protoc-gen-grpc-java-1.40.0.pom) <?xml version="1.0" encoding="UTF-8"?> ...

    NGUI Next-Gen UI v3.11.2 (u5)

    《NGUI Next-Gen UI v3.11.2 (u5)——Unity中的高效UI解决方案》 在Unity游戏开发中,用户界面(UI)的设计与实现是至关重要的环节,它直接影响到玩家的游戏体验。NGUI(Next-Gen UI)是一款专为Unity引擎设计的UI...

    解决 protobuf-gen-lua 跨文件引用message protoc-gen-lua

    解决 protobuf-gen-lua 跨文件引用message,直接覆盖这个文件,重新生成lua文件,就能解析到跨文件引用的message

    最新版本的NGUI插件NGUI Next-Gen UI 覆盖unity多个版本

    NGUI Next-Gen UI是一款功能强大、灵活性高的UI插件,是当前最新版本的NGUI插件。它可以覆盖Unity的多个版本,包括Unity 5、Unity 2017和Unity 2018等。与其他UI插件相比,NGUI Next-Gen UI具有高效的性能和优秀的...

    Proto-gen-lua自动

    标题中的"Proto-gen-lua自动"指的是一个自动化工具或流程,用于处理与 ProtoBuf(Protocol Buffers)相关的 Lua 代码生成。ProtoBuf 是 Google 推出的一种数据序列化协议,它允许开发者定义数据结构,然后生成对应的...

    protoc-gen-as3-1.0.0-rc6-bin.tar

    标题中的"protoc-gen-as3-1.0.0-rc6-bin.tar"是一个压缩包文件,其中包含的是一个名为"protoc-gen-as3"的工具的版本为1.0.0-rc6的二进制版本。这个工具主要用于生成ActionScript 3(AS3)代码,与Google的Protocol ...

    Next-Gen Soft-Shadows.unitypackage

    Next-Gen Soft-Shadows.unitypackage

    Setup-gen-PCIMC6-8.313.0-CHN-6B_std.exe

    pm53C软件 pm53C软件 Setup-gen-PCIMC6-8.313.0-CHN-6B_std.exe

    protoc-gen-lua

    当你下载了`protoc-gen-lua-master`这个压缩包,实际上你获取的是一个protobuf编译器的Lua版本。解压后,你需要将文件夹名`protoc-gen-lua-master`更改为`protoc-gen-lua`,这样做的目的是为了遵循教程中的命名约定...

Global site tag (gtag.js) - Google Analytics