Contents

身为一个软件架构师,你需要做出的重要决定是什么?Robert Martin (Uncle Bob)在他的博客A Little Architecture中用一问一答的方式给出了他的答案。

软件架构师要做的重要决定不是选择什么数据库,选择什么框架,选择什么Web服务器。而是如何才能让我们不用在一开始就决定选择什么数据库,选择什么框架,选择什么Web服务器,而是等到我们有了更多的信息时再做决定。

拿业务逻辑和数据库的例子来说,我们应该用依赖反转原则来让业务逻辑不依赖于数据库,反过来让数据库依赖于业务逻辑。尽管在运行时业务逻辑依赖于数据库,但是在编译时依赖应该反过来,数据库依赖业务逻辑。

最后列一下Uncle Bob举得例子,眼熟不?:)

  1. 早期决定使用数据库,后来发现文件就足够了。
  2. 早期决定使用Web服务器,后来发现只需要一个简单的Socket接口。
  3. 早期决定使用一个框架,后来发现这个框架中的很多功能根本用不上,反而有很多限制让我们很痛苦。
Contents