你知道如何写一个框架吗?详细步骤放送(1)(4)
分享于 点击 7937 次 点评:252
搭建龙骨
在 经过了初步的设计之后,我们可以考虑为框架搭建一套龙骨,一套抽象的层次关系。也就是用抽象类、接口或空的类实现框架,可以通过编译,让框架撑起来,就像 造房子搭建房子的钢筋混凝土结构添砖加瓦是后面的事情,我们先要有一个结构)。对于开发应用程序来说,其实没有什么撑起来一说,因为应用程序中很多模块 都是并行的,它可能并没有一个主结构,主流程,而对于框架来说,它往往是一个高度面向对象的,高度抽象的一套程序,搭建龙骨也就是搭建一套抽象层。这么说 可能有点抽象,我们还是来想一下如果要做一个Web MVC框架,需要怎么为上面说的几个核心模块进行抽象我们也来体会一下框架中一些类的命名,这里我们为了更清晰,为所有接口都命名为IXXX,这点不太 符合Java的命名规范):
接下去就不再详细阐述model、plugin等模块的内容了。
看到这里,我们来总结一下,我们的MVC框架在组织结构上有着高度的统一:
- 如果xxx本身并无选择策略,但xxx的创建过程也不是一个new这么简单的,可以由xxxFactory类来提供一个xxx
- 如果我们需要用到很多个yyy,那么我们会有各种yyyProvider通过getyyy()方法)来提供这些yyy,并且我们需要有一个yyyProviders来管理这些yyyProvider
- 如果zzz的选择是有策略性的,会按照需要选择zzz1或zzzN,那么我们可能会有一个zzzs来管理这些zzz并且通过findzzz()方法)来提供合适的zzz
同 时我们框架的相关类的命名也是非常统一的,可以一眼看出这是实现、还是抽象类还是接口;是提供程序,是执行结果还是上下文。当然,在将来的代码实现过程中 很可能会把很多接口变为抽象类提供一些默认的实现,这并不会影响项目的主结构。我们会在模式篇对框架常用的一些高层设计模式做更多的介绍。
到了这里,我们的项目里已经有几十个空的抽象)类、接口了,其中也定义了各种方法可以把各个模块串起来各种find()方法和execute()方法),可以说整个项目的龙骨已经建立起来了,这种感觉很好,因为我们心里很有底,我们只需要在接下去的工作中做两个事情:
- 实现各种DefaultXXX来走通主流程
- 实现各种IyyyProvider和Izzz接口来完善支线流程
用户点评