本文主要研究一下Onion Architecture项目结构java
Onion Architecture定义了domain、repository、services、ui这几层,其核心要点以下:git
business logic
)能够独立于infrastructure编译和运行github.com/splaw88/onion-architecturegithub
├── application-logic │ └── src │ ├── main │ │ └── java │ │ └── pl │ │ └── splaw │ │ └── onionarchitecture │ │ └── applicationlogic │ │ └── services │ │ └── implementation │ └── test │ └── java │ └── pl │ └── splaw │ └── onionarchitecture │ └── applicationlogic │ └── services │ └── implementation ├── application-services │ └── src │ └── main │ └── java │ └── pl │ └── splaw │ └── onionarchitecture │ └── applicationservices │ ├── exceptions │ │ ├── worker │ │ └── worklog │ └── services ├── domain │ └── src │ └── main │ └── java │ └── pl │ └── splaw │ └── onionarchitecture │ └── domain │ └── model ├── infrastructure │ └── console-based-app │ ├── console-application │ │ └── src │ │ └── main │ │ └── java │ │ └── pl │ │ └── splaw │ │ └── onionarchitecture │ │ └── consoleapplication │ │ ├── factories │ │ │ ├── console │ │ │ ├── worker │ │ │ └── worklog │ │ ├── state │ │ │ └── main │ │ │ ├── worker │ │ │ └── worklog │ │ └── util │ └── console-in-memory-repository │ └── src │ └── main │ └── java │ └── pl │ └── splaw │ └── onionarchitecture │ └── inmemory │ ├── worker │ └── worklog └── repository-interface └── src └── main └── java └── pl └── splaw └── onionarchitecture └── repositoryinterface └── repository
这里application-services工程、repository-interface工程定义了接口;而后application-logic基于这些接口进行业务逻辑的实现;而infrastructure层则是对application-services、repository-interface定义的接口进行实现
Onion Architecture的核心在于内层定义接口,外层来进行实现,而后业务逻辑层则是基于接口来实现业务逻辑,基于接口来进行解耦。app