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

《程序员必读之软件架构》用层封装代码

关灯直达底部

很多软件团队用分层来结构化他们的代码。换句话说,如果你打开一个代码库,就会看到域类包、UI素材包、“业务服务”包、数据访问包、集成包等。这里我用了“包”这个Java术语,但同样适用于C#的命名空间,等等。

原因很简单。我们知道,架构分层一般都是“好事”,很多教程都把这种封装风格作为结构化代码的方法来教授。举个例子,如果你用谷歌搜索Spring或ASP.NET MVC的相关教程,就会在示例代码中看到这一点。我的职业生涯大都花在用Java构建软件系统上,在参与过的大多数项目中,我也用同样的封装方法。

这种封装代码的方法尽管没有什么错,代码结构却从未反映出我们从架构角度看这个系统时考虑的抽象。如果使用一种面向对象的编程语言,你在讨论架构时会谈论“对象”吗?以我的经验来看,答案是否定的。我听到的往往是组件和服务之类的概念,结果架构图中的“组件”实际上是由多个层上的类组合实现的。比如,你可能会发现一个组件有一部分 在“服务”包里,其他部分则在“数据访问”包里。

用层封装

为了做到这一点,较底层的代码(比如“数据访问”包)往往是公开可见的,这意味着它也能被架构中的其他层直接调用。