本文主要研究一下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