Clean Architecture
Now that we’ve covered many layering approaches, it is time to combine them into Clean Architecture. Clean Architecture is an evolution of layering, a way of organizing the relationships between the layers, similar to what we just built.
Instead of presentation, domain, and data (or persistence), Clean Architecture suggests UI, Core, and Infrastructure.
As we saw previously, we can design a layer containing abstractions or implementations. When implementations depend only on abstractions, that inverts dependency flow. Clean Architecture emphasizes such layers but with its own guidance about organizing them.
We also explored the theoretical concept of breaking layers into smaller ones (or multiple projects), thus creating “fractured layers” that are easier to port and reuse. Clean Architecture leverages that concept at the infrastructure layer level.
There are probably as many points of view and variants of this as there are...