聊聊Onion Architecture項目結構

本文主要研究一下Onion Architecture項目結構java

Onion Architecture


Onion Architecture定義了domain、repository、services、ui這幾層,其核心要點以下:git

  • 整個應用基於獨立的domain構建
  • 內部的layer定義接口,外部的layer實現接口
  • 內層與外層經過接口解耦
  • services(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

doc

相關文章
相關標籤/搜索