首页 » 程序员必读之软件架构 » 程序员必读之软件架构全文在线阅读

《程序员必读之软件架构》推迟与解耦

关灯直达底部

有必要简单谈谈推迟技术决策和等到“最后责任时刻”才做出决策。让我们想象一下,你在设计一个没有任何特别繁重的非功能需求或约束的软件系统。你选择什么技术重要吗?一个好的架构难道不应该容许你日后改变主意吗?

举个例子,很多人会说,你用哪个关系型数据库真的不重要,特别是如果你用一个对象关系映射层将代码与特定的数据库实现解耦,比如Hibernate、Entity Framework或者ActiveRecord。如果你没有任何重要的非功能需求或约束,并且确实认为所有的关系型数据库都是相等的,那么你用哪一个可能不重要。是的,你可以在代码中解耦数据库,推迟技术决策。但是别忘了,当数据库的选择不再是重要决策 ,ORM的选择就是了。你可以通过引入另一个抽象层,在代码中解耦ORM,但这里又做了一个软件系统结构的重要决策。

解耦是很好的方法,原因很多,而且它使技术决策得以推迟。当然,这并不意味着你应该推迟决策,特别是由于非功能需求和约束的存在相关的原因。