Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >聊聊Ports and Adapters architecture

聊聊Ports and Adapters architecture

原创
作者头像
code4it
修改于 2021-03-15 02:12:03
修改于 2021-03-15 02:12:03
48400
代码可运行
举报
文章被收录于专栏:码匠的流水账码匠的流水账
运行总次数:0
代码可运行

本文主要研究一下Ports and Adapters architecture

Ports and Adapters architecture

Ports and Adapters architecture,又叫Hexagonal architecture,其中ports层是六边形的边界,其中port又可以分为driver port及driven port,简单理解对应输入层及输出层;边界保护的是内部的app,其中app包括use cases或者叫做application services层以及domain层;adapter可以理解为将外部依赖进行适配,实现port层定义的接口

示例结构

github.com/albertllousas/implementing-hexagonal-architecture

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
├── app
│   ├── domain
│   │   ├── Account.kt
│   │   ├── Ids.kt
│   │   ├── Transaction.kt
│   │   └── Transfer.kt
│   ├── port
│   │   ├── driven
│   │   │   ├── AccountBalanceChecker.kt
│   │   │   ├── AccountFinder.kt
│   │   │   └── Transactor.kt
│   │   └── driver
│   │       └── TransferMoney.kt
│   └── usecase
│       └── TransferMoneyUseCase.kt
└── infrastructure
    ├── adapter
    │   ├── driven
    │   │   ├── InMemoryAccounts.kt
    │   │   └── InMemoryTransactions.kt
    │   └── driver
    │       └── ktor
    │           └── TransferHttpRoutes.kt
    └── config
        ├── ApplicationModule.kt
        └── ApplicationRunner.kt

port层这里定义了driven及driver两大类的接口,然后adapter层对应driven及driver这两大类使用外部的服务进行实现;domain层定义了domain model以及相关领域方法;usecase或者是application service层则是编排

小结

Ports and Adapters architecture,又叫Hexagonal architecture,其中ports层是六边形的边界,其中port又可以分为driver port及driven port,简单理解对应输入层及输出层;边界保护的是内部的app,其中app包括use cases或者叫做application services层以及domain层;adapter可以理解为将外部依赖进行适配,实现port层定义的接口。

doc

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
聊聊Tomato Architecture
clean architecture定义了四层结构,最内层是entities(enterprise business rules),再往外是use cases(application business rules),接着是interface adapters(比如controller、presenters、gateways),最外层是frameworks & drivers(比如web、ui、db、devices、external interfaces)
code4it
2025/06/10
800
聊聊Tomato Architecture
聊聊Tomato Architecture
clean architecture定义了四层结构,最内层是entities(enterprise business rules),再往外是use cases(application business rules),接着是interface adapters(比如controller、presenters、gateways),最外层是frameworks & drivers(比如web、ui、db、devices、external interfaces)
code4it
2025/05/29
1000
聊聊Tomato Architecture
Golang整洁架构实践
👉 腾小云导读 为了降低系统组件之间的耦合、提升系统的可维护性,一个好的代码框架显得尤为重要。本文将为大家介绍众所周知的三种代码框架,并从三种框架引申出COLA 架构以及作者基于 COLA 架构设计的 Go 语言项目脚手架实践方案。希望能给广大开发爱好者带来帮助和启发! ---- 👉 看目录,点收藏 1.为什么要有代码架构 2.好的代码架构是如何构建的     2.1 整洁架构     2.2 洋葱架构     2.3 六边形架构     2.4 COLA架构 3.推荐一种 Go 代码架构实践 4.
腾讯云开发者
2023/04/06
2K0
Golang整洁架构实践
聊聊buckpal对于Hexagonal Architecture的实践
本文主要赏析一下buckpal对于Hexagonal Architecture的实践
code4it
2021/03/20
7840
聊聊buckpal对于Hexagonal Architecture的实践
了解不同架构思维,赏析架构之美
系统架构(System Architecture),软件架构(Soft Architecture)是 IT 领域常见的名词,架构设计是软件系统构建过程中极其关键的一部分。
码哥字节
2020/08/31
1.1K0
基于Clean Architecture的Go项目架构实践
经过这些年的发展,Go语言已经成为一门被广泛使用在各个领域的编程语言。从k8s、docker等基础组件,到业务领域的微服务,都可以用Go构建。在构建这些Go项目时,采用哪种架构模式和代码布局,是一个仁者见仁智者见智的事情。有Java Spring经验的可能会采用MVC模式,有Python Flask经验的可能会采用MTV模式。加上Go语言领域并没有出现主流的企业级开发框架,很多项目甚至没有明确的架构模式。
simpleapples
2021/12/23
6040
基于Clean Architecture的Go项目架构实践
菱形对称架构
在实施领域驱动设计的过程中,限界上下文(Bounded Context)扮演了关键角色:它既是维护领域模型完整性与一致性的重要边界,又是系统架构的重要组成部分。随着社区对限界上下文的重视,越来越多的人开始尝试将更多的架构实践与限界上下文融合在一起,创造出符合领域驱动设计的架构模式。
张逸
2020/03/26
2K0
菱形对称架构
聊聊golang的clean architecture项目结构
clean architecture主要是分了4层结构,domain层,有的会把repository接口放在这一层,然后domain service会调用repository;use case层对应ddd的application层,主要是业务编排,有的也把repository接口放在这一层;interfaces adapters层会对输入和输出进行适配,实现use case定义的方法,类似ddd的interfaces层;infrastructure层主要是对基础服务/类库的管理,有些工程把对repository的实现也放这里了,貌似不太妥当。
code4it
2021/03/13
1.8K0
Golang 整洁架构实践
作者:donghli,腾讯 PCG 后台开发工程师 了解过 Hex 六边形架构、Onion 洋葱架构、Clean 整洁架构的同学可以将本篇文章介绍的实践方法与自身项目代码架构对比并互通有无,共同改进。没了解过上述架构的同学可以学习一种新的架构方法,并尝试将其应用到业务项目中,降低项目维护成本,提高效率。 本文提及的架构主要指项目组织的“代码架构”,注意与微服务架构等名词中的服务架构进行区分。 1.为什么要有代码架构 历史悠久的项目大都会有很多开发人员参与“贡献”,在没有好的指导规则约束的情况下,大抵会变成一
腾讯技术工程官方号
2023/04/01
1.1K0
Golang 整洁架构实践
端口和适配器架构
覃宇,Android开发者/ThoughtWorks技术教练//译者,热衷于探究软件开发的方方面面,从端到云,从工具到实践。喜欢通过翻译来学习和分享知识,译作有《Kotlin实战》、《领域驱动设计精粹》、《Serverless架构:无服务器应用与AWS Lambda》和《云原生安全与DevOps保障》。
张逸
2023/03/23
4740
端口和适配器架构
[翻译][架构设计]The Clean Architecture
本文讨论了软件架构中的六边形架构和依赖反转原则,以及如何应用这些原则来编写可测试且易于维护的软件系统。作者通过一个实际的例子来说明这些原则,并介绍了如何将它们应用于实际开发中,以解决软件的可维护性和可测试性问题。
用户1172465
2018/01/08
2.3K0
[翻译][架构设计]The Clean Architecture
六边形架构:三个原则和一个实现示例
由Alistair Cockburn于 2005 年记录的Hexagonal Architecture 是一种具有许多优势的软件架构,并且自 2015 年以来再次受到关注。 Hexagonal Architecture的初衷是: 允许应用程序同样由用户、程序、自动测试或批处理脚本驱动,并在与其最终运行时设备和数据库隔离的情况下进行开发和测试。 要探索通过自动化测试试点应用程序或独立于数据库进行开发和测试的好处,我们建议您阅读我们最近发布的关于测试金字塔的这一系列博客文章:实践测试金字塔。 这个 Promis
IT大咖说
2022/09/27
1.8K0
六边形架构:三个原则和一个实现示例
重新审视演进式设计
演进式设计是一种理念,它曾经颠覆过传统笨拙的计划式设计,如今,它依旧焕发着生命力,但我们不能以静止的眼光去看待它,而应该尝试着引入一些新的方法、框架乃至技术。 说起来,所谓Evolutionary Design已经是老生常谈了。早在2004年,Martin Fowler在文章Is Design Dead中就深刻地比较了计划式设计与演进式设计,至今阅读这篇文章,对于理解敏捷和演进式设计依旧振聋发聩。我在文章设计恰如其分的架构中,也算得上是旁征博引地阐述了诸多与演进式设计相关的理念,例如Neal Ford提出
张逸
2018/03/07
7840
重新审视演进式设计
「应用架构」六边型架构:三个原则和一个实现示例
Hexagonal Architecture于2005年由Alistair Cockburn撰写,是一个具有许多优势的软件架构,自2015年以来又重新引起了人们的兴趣。
架构师研究会
2019/09/08
1.7K0
前端代码复用学习笔记:整洁架构与清晰架构
基础代码的复用往往比较简单,但是业务代码的复用通常是困难的,如果没有特殊的手段去治理项目会逐渐发展为难以维护的巨石应用,按照维基百科记载,代码的复用形式主要有三种,程序库,应用框架,设计模式
周陆军博客
2023/03/18
1K0
从理论到实践:Go 项目中的整洁架构设计
你维护的 Go 项目代码架构是什么样子的?六边形架构?还是洋葱架构?亦或者是 DDD?无论项目采用的是什么架构,核心目标都应是一致的:使代码能够易于理解、测试和维护。
陈明勇
2024/12/06
5467
从理论到实践:Go 项目中的整洁架构设计
聊聊go-bank-transfer项目对Clean Architecture的实践
本文主要赏析一下go-bank-transfer对于 Clean Architecture的实践
code4it
2021/03/21
4520
聊聊go-bank-transfer项目对Clean Architecture的实践
【第三格】如何实现领域驱动设计
从Eric Evans写下经典名著Domain-Driven Design: Tackling Complexity in the Heart of Software至今,DDD刚好发展了十年的时间。它几乎成了开发复杂软件系统主要的领域设计方法,既是面向对象(组件)设计的补充,又超越了面向对象(组件)设计。DDD中提出的诸多概念如实体、值对象、聚合等,已经成为了耳熟能详的设计术语。DDD社区的发展也如火如荼,似乎并没有被层出不穷的设计思想所取代,相反,它仍在强劲地发展,吸收了许多新的概念与方法,例如函数
张逸
2018/03/07
1.1K0
【第三格】如何实现领域驱动设计
DDD这样落地
DDD这个主题已经写了好多篇文章了,结合最近的思考实践是时候总结一下,对于战略部分有点宏大,现在都是在微服务划分中起着重要作用,暂且总结战术部分
码农戏码
2021/05/24
1.7K1
DDD这样落地
应用架构之道:分离业务逻辑和技术细节
硬是要给一个概述,我认为 架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。
会呼吸的Coder
2020/11/03
1.1K0
应用架构之道:分离业务逻辑和技术细节
相关推荐
聊聊Tomato Architecture
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验