《架构整洁之道》之划清边界

软件架构设计本身就是一门划分边界的艺术。边界的作用是将软件分割成各种元素,以便约束边界两侧之间的依赖关系。其中有一些边界是在项目初期,甚至在编写代码之前,就已经划分好,而其他的边界则是后来才划分的。在项目初期划分这些边界的目的是方便我们尽量将一些决策后进行,并且确保未来这些决策不会对系统的核心业务逻辑产生干扰。

架构师们所追求的目标是最大限度地降低构建和维护一个系统所需的人力资源。

那么系统最消耗人力的资源是什么呢?答案是系统中存在的耦合(尤其是那些过早做出的、不成熟的决策所导致的耦合)。

插件式架构

事实上,软件开发技术发展的历史就是一个如何想方设法方便地增加插件,从而构建一个可扩展、可维护的系统架构的故事。系统的核心业务逻辑必须和其他组件隔离,保持独立,而这些组件要么是可以去掉的,要么是有多种实现的。

用户界面如果以插件形式存在的话,那么我们可以用插拔的方式切换很多不同类型的用户界面。可以是基于Web模式的、基于客户端/服务端模式的、基于SOA模式的、基于命令行模式的或者基于其他任何类型的用户界面技术的。数据库也类似。

插件式架构的好处

将系统设计为插件式架构,就等于构建起了一面变更无法逾越的防火墙。换句话说,只要GUI是以插件形式插入系统的业务逻辑中的,那么GUI这边所发生的变更就不会影响系统的业务逻辑。

所以,边界线也应该沿着系统的变更轴来画。也就是说,位于边界线两侧的组件应该以不同原因、不同速率变化着。

一个系统的GUI与业务逻辑的变更原因、变更速率显然是不同的,所以二者中间应该有一条边界线。同样的,一个系统的业务逻辑与依赖注入框架之间的变更原因和变更速度也会不同,它们之间也应该画边界线。

本质上体现单一职责原则(不同的插件做不同的事情,归根结底,每一个插件只专注于一件事情)。

文章目录
  1. 插件式架构
  2. 插件式架构的好处