什么是六边形设计模式?

36

我一直在关注这个链接

他们提到了一个我不熟悉的术语

什么是六边形设计模式?


1
这是在 Mock-heavy TDD 环境的背景下,在 2:48 后提到的。 - Fuhrmanator
这个视频很不错:https://www.youtube.com/watch?v=bDWApqAUjEI - Tim Abell
4个回答

37

来源于http://alistair.cockburn.us/Hexagonal+architecturehttps://github.com/jschairb/sandbox/wiki/HexagonalArchitecture

六边形架构是通过在应用程序域周围建立一个范围,并建立输入/输出交互的适配器来定义的一种架构。通过建立这个隔离层,应用程序不知道它正在与什么样的东西进行交互。

创建你的应用程序以在没有UI或数据库的情况下工作,这样您就可以对应用程序运行自动回归测试,当数据库不可用时也可以正常工作,并且无需任何用户参与即可连接应用程序。- Alistair Cockburn


12
哦,我想它肯定和六边形有关。这表明“给事物命名是编程中最难的部分”,我想是这样。 - Patrick M
4
链接页面上的图表确实有六个面,但它们之所以有六个面并没有其他原因,只是被画成了那样。文档中讲述建立端口和接口,图表展示每个端口/接口占用封闭多边形的一个面。然而,最复杂的图表仅显示使用了四个面。它本可以命名为“五边形架构”或“七边形架构”,唯一变化的是更多的人会质疑数字的重要性。 - Patrick M
2
六边形之所以不是因为数字6很重要,而是为了让绘图人员有足够的空间插入端口和适配器,不受一维分层绘图的限制。 - Patrick M
所有的网站内容似乎都消失了。存档链接:https://web.archive.org/web/20170606075805/http://alistair.cockburn.us/Hexagonal+architecture - Tim Abell

11

您是指六边形设计模式吗?

六边形设计模式的意图

允许应用程序同样被用户、程序、自动化测试或批处理脚本驱动,并且能够在其最终运行设备和数据库中被独立开发和测试。当外部世界的事件到达一个端口时,技术特定的适配器会将其转换为可用的过程调用或消息,并将其传递给应用程序。应用程序对输入设备的性质一无所知。当应用程序有东西要发送时,它通过一个端口发送到适配器,适配器创建接收技术所需的适当信号(人类或自动化)。应用程序在所有连接它的适配器上具有语义上合理的交互,而不必实际了解适配器另一侧的事物的本质。

在这里了解更多信息

备份文章版本:https://staging.cockburn.us/hexagonal-architecture/


3
根据我的理解,六边形架构是软件工程实践中关于关注点分离的一个流行术语。它基本上是指你的输入/输出逻辑应该隐藏在领域逻辑之后,这样你的核心业务逻辑就可以适应不同的“用户”。它与MVC模式密切相关。我认为“六边形架构”这个名字只是演讲者编造的,而有些人正在接受它。

3
每一个软件设计模式、指南或其他东西都是“关注点分离的通用软件工程实践”的一种形式 :-) - Ashkan Kh. Nazary
这不是一个很好的回答。Stack Overflow并不是一个随意讨论猜测的休闲讨论板块。如果你对这个问题没有具体的技术知识,请不要在这里发帖。 - Basil Bourque

2
这更像是一个整体系统设计。基本上,你希望你的代码对所有人都友好。为了支持这一点,例如,Web服务符合标准并且通常支持JSON。为什么?Web客户端以各种形式出现,因此遵循标准允许您的客户端轻松集成。JSON更进一步:它使在其上附加UI变得轻松无痛。
从技术角度来看,你不能完全建立一个未来的可靠服务。只需确保服务的目标清晰明确,符合它的目的即可。如果该目的不再适用,则需要新服务。
这说起来容易做起来难。当你开始被你的老板逼迫为了快速完成牺牲这些原则时,你必须做必要的事情来摆脱他/她。但是,黑客行为已经完成,并且通常结果是该服务承载了与其本身无关的逻辑。
如果你可以将一个原则融入到你的系统设计中,那就是:开放扩展。关闭修改

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接