Clean Architecture

软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求

对于每个软件系统,我们都可以通过行为和架构两个维度来体现它的实际价值

编程范式的实际含义,它们都从某一方面限制和规范了程序员的能力。没有一个范式是增加新能力的。也就是说,每个编程范式的目的都是设置限制,这些范式主要是为了告诉我们不能做什么,而不是可以做什么

程序应该是设备无关

通常来说,要想构建一个好的软件系统,应该从写整洁的代码开始做起,毕竟,如果建筑所使用的砖头质量不佳,那么架构所能起到的作用也会很有限。反之亦然,如果建筑的架构设计不佳,那么其所用的砖头质量再好也没用用。

SRP

<1>每个模块都应该只做一件事情

<2>任何一个软件模块都应该有且仅有一个被修改的原因

<3>任何一个软件模块都应该只对某一类执行者负责

Clean ArchitectureClean Architecture

OCP

<1>我们可以将满足不同需求的代码分组(即SRP),然后再来调整这些分组之间的依赖关系(DIP)

Clean Architecture

Clean Architecture

<2>依赖方向的控制

<3>信息隐藏

FinancialReportRequester接口保护FinancialReportController不过度依赖于Interactor的内部细节。如果没有这个接口,则Controller将会传递性的依赖于FinancialEntities