Bootstrap

浅析整洁架构之道(二) 初步了解The Clean Architecture

The Clean Architecture概述图

上图为Robert C. Martin对The Clean Architecture的描述图

1. The Clean Architecture是方法论,而非具体

当我们说架构的时候,很多人会下意识的想到类似单体架构,*微服务*,或是Spring全家桶等架构的模式。

The Clean Architecture与上述完全不相关,它是一种方法论。也就是:

  • 它不与具体的语言,框架相关联

  • 它不与具体的技术方向相关联

1.1 不与语言,框架关联

需要牢记在心,并不是Java才能应用这个架构,事实上,The Clean Architecture适合于所有语言,就笔者用过的几个语言,Java,TypeScript,Kotlin,Swift等,均可以使用上述The Clean Architecture

所以,理所当然的,它更不会与具体的技术相关联。事实上,技术是实现细节,这个在图中的环型的层中的最外层,也就是The Clean Architecture认为它是最不重要的一层。

无论你用的是哪种技术框架,比如是用关系型数据库或是*非关系型数据库*,JPA或*Mybatis*,甚至于传统模式的编程及*响应式编程*等,都可以也应该把整洁架构应用上

1.2 不与具体的技术方向相关联

当我们说架构这个词的时候,很容易让人联想到这只是架构师的事,而架构师这个专有名词通常是应用于后台,后台当前主流是以Java系为主。很多人会想当然的认为,架构的东西只与后台关联。

*这是一个极大的误解*

事实上,在笔者只从事后端方向开发的时候,也是这样想当然的。但当笔者近些年,陆续主导Android,iOS以及前端React,TypeScript等项目开发的时候,才慢慢的理解*这是错误的理解*

整洁架构事实上可以适应也应该适应于所有方向,特别是前端,移动端等,这些方向的技术人员通常对架构更缺少全局观,更容易陷入技术细节中去。

后续笔者会继续论述如何在前端或移动端应用类似整洁架构及*领域驱动风格*的设计

2. The Clean Architecture的基本特征

如果你能理解或明白上述笔者所说的整洁架构是与语言,框架,技术方向无关的,那接下来的基于特征就更进一步说明了这一点。

Robert C. Martin论述了他所认为的The Clean Architecture具备的几个基本特征

从上述的基于特征也可以进一步论证,The Clean Architecture是与语言,框架,技术方向无关的。事实上也是,不管你从事哪主面的开发,上述原则都应该是你在编码开发过程应该参考的基本原则,它同时也是可维护性的基本保证,做不到上述几个原则,你的代码的就如空中阁楼,不可能有维护性可言

事实上,这也恰恰是我们大多数程序员不关注的地方。很多程序员会下意识的问:有什么必要隔离具体的技术?Hibernate,压根不会换

这是非常不成熟的表现。后续笔者会慢慢论述为什么这种想法是非常幼稚与不成熟的

3. The Clean Architecture的分层及依赖原则

3.1 The Clean Architecture的分层

从图所示可以看出,The Clean Architecture大致上可以分为以下几个层

当然,这只是一个概述,事实上,根据项目不同,你可以在这其中添加其它层。

后续笔者再来论述这几个层,在这之前,先明确一个*黄金原则*,也就是依赖原则

3.2 The Clean Architecture的黄金原则

在讲述其它原则之前,有一个必须要明析的原则: The Clean Architecture的依赖原则

依赖是由外向内的,也就是*外层知道并依赖内层,内层不知道也完全不能调用外层*

这是黄金法则,需要一再强调。

在这个架构中,具体的技术,框架。比如数据库,网络框架等,是在最外层的。也就意味着你的项目中,核心业务不能调用知道任何与类似JPA或*Hibernate*的API调用。

很多人会问,怎么做到?

后续笔者再慢慢到来。

查阅系列文章:

[浅析整洁架构之道 (一) 为什么需要整洁架构]

本文首发于个人网站