主要分析存在多个版本特性时的软件构建策略。多个版本特性在有些情况下仅仅对应于软件的本地化,复杂的情况就是不同版本中模块的业务逻辑、呈现策略都不相 同。这不仅在产品开发过程中增加成本,更多的成本将在维护阶段体现出来。因此,选择一个合适的构建策略对降低开发与维护成本都是非常重要的。
一、传统软件构建策略
不同的版本采用不同的代码,通过派生或直接使用不同的代码实现。每个版本都会对应到一份的这个版本相关的代码。在代码发布成产品时,我们还需要一个build过程,将源码打包发布成可执行文件。
这里体现多版本特性的代码可能简单可能复杂,关键要看软件整体的设计对多版本的支持。
1.1 采用strategy模式实现
模块A能访问到本地策略,根据不同版本的差异实现Local1、Local2来实现具体的用户需求。
这里存在几个问题。
一、系统中的层次结构很复杂,如果模块E同样也需要根据版本特性来确定自己的行为,这时可能有两种方式:将ILocal层层传递,从A到C再到E;采用singleton模式。不过这两种方式都破坏了对象的封装性。
二、ILocal中的方法会非常多。系统中所有的版本差异都将放到ILocal的方法中,很快这些方法就会失去控制。那是否可以对特性分类处理呢,将某一类特性放到一个接口中可以降低ILocal的管理成本,但没有从本质上解决问题。
三、Local实现类会随着项目的推进,或者在维护过程中变得