整体课程概览
一:X-ge概况
包括:引入、X-ge项目背景、X-ge的HelloWorld
二:X-ge整体介绍
包括:系统功能概述、外部主题功能概述、高层结构概览
三:核心框架之配置管理
设计并实现配置管理模块,包括:简单工厂模式、单例模式、桥接模式、解释器模式、组合模式、备忘录模式、原型模式、生成器模式、策略模式 的综合应用
四:核心框架之分发调度
设计并实现分发调度模块,包括:外观模式、命令模式、职责链模式、中介者模式的综合应用
n五:核心框架之生成代理
设计并实现生成代理模块,包括:代理模式的应用
n六:核心框架之具体调用
设计并实现具体调用模块,包括:状态模式、模板方法模式、工厂方法模式、装饰者模式、观察者模式的综合应用
n七:核心框架之模板管理
设计并实现模板管理模块,包括:享元模式、访问者模式的综合应用
n八:核心框架之生成输出
设计并实现生成输出模块,包括:抽象工厂模式的应用
n九:使用外部主题
n十:自定义外部主题
包括:外部主题制作的方法和步骤、模板制作、配置约定、动作实现、访问者实现、装饰器实现、输出类型实现等
引入
n研磨设计模式上市后
在《研磨设计模式》一书上市后,好评如潮,很多朋友都认为:《研磨设计模式》一书,从零开始,由浅入深,详细、准确、深入地探讨了GoF的著作《设计模式——可复用面向对象软件的基础》一书所提出的23个设计模式 ,是学习设计模式的最佳读物之一,更是近年来国内原创书籍中难得的佳品。
n很多朋友提出了更高的要求
要求做一些设计模式综合应用的实战案例,让大家学习在实际项目中,如何真正使用设计模式,而不再停留在只是知道设计模式,但不会使用的尴尬境地;从而帮助大家提高应用设计模式的水平,也提高大家基本的设计能力。
n在这些朋友看来之一
《研磨设计模式》一书注重对设计模式本身的理论的讲述,比如:每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等等模式的基础知识;同时也深化到中高级的内容,比如:深入探讨如何理解这些模式,模式中蕴含什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点,和其它模式的关系等等,让读者尽量去理解和掌握每个设计模式的精髓所在。
n在这些朋友看来之二
虽然《研磨设计模式》一书已经在理论联系实际上下了很大的功夫,引入了很多实际应用来做案例,但是毕竟整本书是偏重于理论部分的,因而在如何把设计模式应用到实际项目中,尤其是综合应用多个设计模式来解决实际问题,《研磨设计模式》一书是涉及甚少的。 而在实际开发中,几乎总是需要综合应用多个设计模式,才能更好的解决实际问题。
简单点说,《研磨设计模式》一书让大家深入理解和掌握了单个设计模式的理论和应用,那么该如何综合使用这些设计模式来解决实际项目中的问题呢?
因而有了前面提出的要求。
面对大家的信任和要求,我诚惶诚恐!
这可不是个好干的差事,怕做不好而辜负了大家的信任和期待。
n这个差事的难度
设计模式的综合应用案例并不好做,为每一个模式单独寻找合适的应用案例并不困难,但是想要在一个项目中找到全部GoF模式的应用,而且还要尽量准确应用,还要项目大小适度,难度适中,具有实际意义,那就不是一个简单的事情了。
再说了,对于实际应用,就算是同样的功能,大家实现的思路也是不一样的,做出来通常都是千人千面的,每个实现都有自己这样做的理由和想法,因此,要做一个大家都认可的应用案例,难度可想而知,求同存异吧!
虽然很困难,总得有人去做这样的事情,本人愿意当这个先锋,做大家在设计道路上前进的垫脚石。
为此精心设计了一个实际应用X-gen,覆盖了23个GoF模式中的21个,把这些设计模式细致、贴切的组合起来,构建一个精致的架构,开放、灵活而又非常小巧。
nX-gen这个实战项目的特点
1:应用不大,利于朋友们真正把它看完、看懂,从而细细体会和揣摩如何在实际开发中综合应用多个设计模式
2:对21个模式安排紧凑,绝大多数的模式应用得很贴切,都经过精心的设计。当然要在一个项目不大的情况下,糅合进21个GoF模式的应用,难免存在极少数为了模式而模式的地方,欢迎各位大侠批评指正,以求共同进步。
3:应用是完整的、实用的,这不是演示应用,而是可以在实际开发中使用的应用,因而更具特别的价值
n学习X-gen这个实战项目的说明
1:要想能真正领会X-gen这个实战项目,前提是要对单个的设计模式掌握基本到位了,建议朋友们在看的时候,有不甚明了的地方,回去参考《研磨设计模式》一书,理论联系实际,实际反过来加深对理论的理解,从而相得益彰,真正全面、系统、深入的理解和掌握设计模式的知识。
2:虽然X-gen这个实战项目的主题是讲述在实际项目中如何综合使用设计模式,但是为了让大家更好的理解所讲述的示例项目,还是按照正常的项目开发顺序,先简要进行项目整体的介绍,然后再分模块具体讲述如何实现相应的功能,以及如何在实现上应用相应的设计模式。
3:由于X-gen这个实战项目的重心是在讲述设计模式的应用上,项目不过是用来示例如何综合使用设计模式,因此,在软工方面会适当弱化,仅仅为了让朋友们更好的理解要讲述的综合应用设计模式方面的内容。
X-gen项目背景
nX-gen项目背景
很多做应用项目的朋友都会有这样的感觉:项目越来越大,模块越来越多,但是大多数都是重复或者相似的做法,至少每个模块的基础部分的实现是差不多的,比如CRUD(增删改查)功能的实现,又比如翻页功能的实现等等。
因此,很多朋友都在想办法解决这个问题,如何能够减少这些重复劳动,让自己把有限的时间和精力投入到具有创意或挑战的功能实现上。
很快地,大家便根据自己的需要,结合公司已有的系统架构和公共功能,制作出了符合自己需要的小应用,可以实现根据配置文件或者是数据库定义来生成应用模块,并带上增删改查的功能实现。
一切看起来是那么完美,从此不需要再去写每个模块的基础部分了,可以根据配置或数据库定义来生成这些基础部分,然后在此基础之上,进行业务功能的开发就可以了。
通常这种程序,由于是公司内部专用,因此会实现得非常简单,很多复杂多变的状况也就不再去考虑了,只要满足自己的需要即可。
面临的问题
1:如果生成的配置文件需要发生变化:那么相应的读取配置文件的程序需要变化;同时使用这些数据的程序也需要变化
2:如果模板文件需要发生变化:那么读取模板文件的地方需要发生变化,同时,运行中把参数数据设置到模板的程序也需要发生变化
3:如果调用逻辑或调用顺序需要发生变化:那就需要修改调用部分的程序来适应新的变化
4:如果输出格式需要发生变化:那就只好重新写代码来实现新的输出格式
类似这样的问题还有很多,这里就不一一列举了。
由于很多这样公司内部使用的工具型应用,是按照公司现有的开发模式来实现的,大都实现得非常简单和僵硬,对于这些变化适应能力是非常差的。
而上述这些变化,是经常发生的,因此,很多公司都会有人专门负责维护这样的内部应用,不断更改这些程序来适应新的应用的需要。但由于生成的调用过程、生成配置、生成模板以及最后生成等功能是搅和在一起的,因此改动起来非常困难。
X-gen出场
因此我们需要一个项目,来把生成应用的核心部分独立出来,形成公共的应用,让变化的部分从应用中分离出来,让程序人员可以根据需要进行配置和扩展,从而适应各种应用的需要。
X-gen就是这样一个应用。X-gen分成两个部分,一个部分是核心框架,用来实现生成应用的公共部分;另外一个部分就是自定义模板部分,按照程序人员的需要来制定模板,几乎所有能重复使用的功能都可以通过X-gen生成,没有什么使用限制。
X-gen的HelloWorld
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)之间额外的附加层,目的是能够根据需要切换不同的代理,比如生成调度根据配置,需要通过远程来生成,那么就需要远程代理,远程访问的方式可能是rmi或webservice等等
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核心框架使用的重要数据。

私塾在线原创精品课程,转载请注明私塾在线【http://sishuok.com/forum/blogPost/list/0/6788.html】