可持续的软件架构

一方面,我们的确需要灵活的,易于扩展、容易修正的框架。另一方面,我们需要这些基础框架尽可能的坚固,以支撑构筑于其上的应用的稳定性。

为了灵活性我们会提供很多的配置,选项(比如定义一个简介层来适配不同的数据库类型),这样我们在后续的开发中如果需要切换到另一个实现上时仅需要付出很小的代价即可。但是,往往我们并不能预测变化会在哪个维度发生,也许数据库从MySQL切换到了Oracle,也许是Web容器变成了Websphere,又或者模板引擎从Freemark变成了Velocity

由于我们在预测未来上做的非常糟糕,事实上很难在开始时就预料到变化的方向。