前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊Onion Architecture项目结构

聊聊Onion Architecture项目结构

作者头像
code4it
发布2021-03-24 17:25:56
4410
发布2021-03-24 17:25:56
举报
文章被收录于专栏:码匠的流水账码匠的流水账

本文主要研究一下Onion Architecture项目结构

Onion Architecture

Onion Architecture定义了domain、repository、services、ui这几层,其核心要点如下:

  • 整个应用基于独立的domain构建
  • 内部的layer定义接口,外部的layer实现接口
  • 内层与外层通过接口解耦
  • services(business logic)可以独立于infrastructure编译和运行

示例结构

github.com/splaw88/onion-architecture

代码语言:javascript
复制
├── 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的核心在于内层定义接口,外层来进行实现,然后业务逻辑层则是基于接口来实现业务逻辑,基于接口来进行解耦。

doc

  • The Onion Architecture : part 1
  • The Onion Architecture : part 2
  • The Onion Architecture : part 3
  • Onion Architecture: Part 4 – After Four Years
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Onion Architecture
  • 示例结构
  • 小结
  • doc
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档