《史记·高祖本纪》:“地势便利,其以下兵于诸侯,譬犹居高屋之上建瓴水也。”这里用到了高屋建瓴这个词。意思是把瓶子里的水从高层顶上倾倒。比喻居高临下,不可阻遏的形势。现指对事物把握全面,了解透彻。此典故于汉高祖刘邦欲杀功臣韩信,大夫田肯进言到"陛下牢牢地控制着三秦(关中),陛下利用这雄险的地势,来控制、驾御诸侯,就如从高高的屋脊上把水从瓶子里倒下去。”以此来表彰韩信的功劳,于是,刘邦赦免了韩信,只是将他降为淮阴侯。
同样,设计企业框架,也要对事物把握全面,了解透彻。我们设计框架的时候,考虑了以下理念。
1. 使用灵活
可以整个使用它,也可以只用它的一个或几个部分。一个完整的框架可能需要有许许多多个部分组成,但是对于实际应用的用户来说,它可能只需要其中的一部分功能。构架一定要有这种能力,可以由使用者进行点菜式,使用,避免只要用一点点功能,就要引入许许多多的内容。
2. 保持核心的稳定性
我们所设计的框架,是立足于在需要稳定、安全要求非常高的应用环境中使用的,因此其稳定性就是框架构建者首要思考目标,核心部分只使用经过充验证及广泛应用的第三方包。在构建过程中,曾经复用了某饱受赞誉基金会下的一个2.0版的开源包,结果在应用过程中出现了严重的内存泄露问题,最后不得已花费了非常大的工作量才清理干净,这也更让我们对选择第三方包的审慎。
3. 学习成本低、上手容易
框架的学习成本必须非常低,这样才可以让使用者更容易上手,避免由于学习难度大而导致的学习曲线太陡、太长。经过许多次的实践,我们总结出来:有基础的JAVA开发人员经过半天的培训,就可以完全学会基于Tiny框架进行开发,经过1天到两天的实践就会变成熟手。对框架进行扩展或基于框架扩展接口进行扩展,则需要3天左右的培训,就可以完全掌握,经过一周的实践就会变成熟手。
4. 文档一体性
做一个好的软件,好的文档是必不可少的。而做软件过程中非常挠头的就是文档了,文档写得早了,后期变化过程中又不对文件进行不断的调整,工作量非常大,稍不注意,又会导致文档与实际不对应;文档写得晚些吧,又可能会流于形式。Tiny框架在构建之初就深刻的考虑这个问题。这个问题主要涉及几个软件的参与者:Tiny框架扩展者:Tiny框架很多的时候都是一个体系而已,更多的内容需要后期进行扩展,这些扩展的内容的文档如何编写,是需要考虑的问题。Tiny框架使用者:Tiny框架的使用者,主要使用Tiny框架来进行业务开发,他在开发过程中需要用于Tiny框架扩展者扩展的组件,他们期望看到这些组件的最新文档,同时又不希望看到许多与自己无关的内容,同时在开发过程中,又不想到许多地方去查找这些文档,最后是在自己的开发环境就可以随时看到。Tiny组件库管理者:当TIny框架扩展者把这些扩展组件添加到组件库之后,也希望能有一种方式,方便的展现这些组件,方便Tiny框架的使用者选用。基于Tiny框架开发的业务系统:这些系统中有许多对外的服务,而服务需要有文档说明,Tiny框架提供了这些服务文档的生成功能,这样就可以保证服务与服务文档的一致性。所以TIny框架的构建者,在各种组件中都有相关文档描述的元数据,这样,不管是在工具还是在管理台,都可以方便的查阅、导出这些文档信息。
5. 方便的外延性
Tiny框架构建者也深深知道,自己不可能解决所有问题,所以,Tiny框架除了最小的核心之外所有的部分都是可选的、可替换的。Tiny框架对于第三方包的使用也完全持开放态度,这个可以完全由使用者自行选择,不做任何限制
6. 现有资产的可复用性
由于考虑到企业应用的场景,Tiny框架构建者也知道,不可能所有的项目都是从零开始的,一定有一些项目是在现有基础上进行重新开发或者重构的,不管是哪种情况都需要把其中的一部分或者大部分复用起来,以充分降低成本、利用企业现有资产。
7. 资产的可积累性
只有易于知识积累,才可以真正做到越用越强。Tiny框架正是基于上述观点,才提出一构建Tiny生态圈的概念。不管是私有生态圈还是共有生态圈,都是体现一种众人拾柴火焰高的思维,一起来扩展、一起来复用。当然Tiny框架也意识到光有口号是不行的,一定要有规范和机制进行保障,所以在Tiny框架中,许多地方都涉及到规范、元数据等内容,以实现资产可积累、复用的目标。由于考虑到企业应用的场景,Tiny框架构建者也知道,不可能所有的项目都是从零开始的,一定有一些项目是在现有基础上进行重新开发或者重构的,不管是哪种情况都需要把其中的一部分或者大部分复用起来,以充分降低成本、利用企业现有资产。
欢迎入住我们的框架生态圈:http://web.j2ee.top。本例涉及的代码和框架资料,将会在论坛分享。《自己动手写框架》成员QQ群:228977971,让我们一起动手,了解框架的奥秘!
《自己动手写框架8》:高屋建瓴,理念先行