本文将以TestLinkAPI为案例,介绍门面模式(Facader Pattern)以及在TestLinkAPI中利用此模式提供统一对外服务接口,提高用户使用便利性的案例。
1. 门面模式模式简介
在上海和很多城市,现在都建立了所谓的“一门式”服务中心。
在一篇有关上海市浦东新区一门式服务创新的新闻中,记者写道“新区政府以城市居民核心为载体,整合资源,重组事务,创新服务标准样式。原来,做事部门散布在全区47个不一样的地方,如今,只要进城市居民核心一扇门就行了。84个前台窗户、77个后台支持,区级层面为城市居民和公司的做事情的项目目都在这儿集中。”
从设计模式的角度理解,所谓的”一门式“其实就是门面模式(Facade)
如上图所示,通过"一门式"这个Facade,过去各个市民和企业要去各个政府机构和行政审批服务机构才能完成的事情,只要在一门式就能完成。对于后台的各个系统的调用,则由Facade自身去完成,ClientA等这些用户无需关注。这就是门面模式所带来的好处。
2. 门面模式在TestLinkAPI中的应用
1) TestLink与TestLinkAPI
TestLink 是一个开源的测试管理系统,提供测试需求管理、测试用例管理、测试计划管理、测试执行与结果报表管理等功能。TestLinkAPI是一套与TestLink进行交互的第三方接口,利用了TestLink提供的 XML-RPC over HTTP接口进行了二次开发,提供统一的TestLinkAPI,便于用户进行使用。整个TestLinkAPI的设计,其实就采用了门面模式,而TestLinkAPI这个类,就是一个Facade类。如下图所示,
对于需要和TestLink进行交互的外部系统,可以借助于TestLinkAPI,调用其提供的各项服务方法,完成例如测试项目创建,测试结果导入等等的功能。而如果没有统一的TestLinkAPI的话,则外部调用者需要面对测试项目、测试执行、测试计划等各个服务类,增加系统调用的复杂性。
2) 案例点评
在系统级别的自动化测试中,我们也倾向于提供统一的对外服务的接口供外部用例调用,如将系统服务调用、数据库查询、文件处理、OS操作等在开发完成后,部署到统一对外服务的门面类中 ,简化外部使用者的使用。
另外,XML-RPC已经是一个非常古老的接口形式。在新的TestLink中,增加了Restful的接口。笔者也仿照着TestLinkAPI,写了一个TestLinkRestAPI,感兴趣的读者可以访问https://github.com/patown/testlinkrestapi进一步了解和使用。