序
本文主要研究一下Onion Architecture项目结构
Onion Architecture
Onion Architecture定义了domain、repository、services、ui这几层,其核心要点如下:
- 整个应用基于独立的domain构建
- 内部的layer定义接口,外部的layer实现接口
- 内层与外层通过接口解耦
- services(
business logic
)可以独立于infrastructure编译和运行
示例结构
github.com/splaw88/onion-architecture
├── 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的核心在于内层定义接口,外层来进行实现,然后业务逻辑层则是基于接口来实现业务逻辑,基于接口来进行解耦。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。