对代码的编写有很好的指导作用-聊聊六边形架构 (代码的编写过程)
为了编写出漂亮代码,学习设计模式是一个好方法。但是,只读这些书籍还不够,还需要理解它们背后的思想,即面向对象的原则。
六边形架构是一种软件架构模式,遵循这些原则,可以实现高内聚、低耦合和可测试性的应用程序设计。
什么是六边形架构?
六边形架构由 Alister Cockburn 发明,他是敏捷宣言的签署者之一。它是一种端口与适配器架构,由内外两层六边形组成,如下所示:
深蓝色六边形表示应用程序的核心,浅蓝色六边形表示外部接口。紫色部分的 context 是在实践中添加的,用于贯穿整个调用链的业务上下文。
端口和适配器
六边形架构有两个关键概念:端口和适配器。
端口是应用程序定义的接口,必须由外界实现,以便应用程序可以接收或发送信息。它可以是 Interface、WebAPI 接口或公共方法。
适配器是连接应用程序核心和外部接口的桥梁。它将外部请求转换为应用程序核心可以理解的格式,并将核心的响应转换为外部接口可以接受的格式。
通过端口和适配器,应用程序核心与外部存储隔离,从而变得稳定且易于更改。
为什么叫六边形架构?
目前没有明确的理由说明为什么是六边形,而不是其他的形状。或许只是因为六边形比较好看,又或许是因为六边形代表一个模块,系统由许多六边形模块组成,就像蜂窝一样。
六边形架构的特点
- 应用程序核心分离且可测试。
- 外部接口和适配器负责外部交互,保持应用程序核心独立和可复用。
- 高内聚、低耦合。
六边形架构的原则
六边形架构遵循面向对象的原则,使系统保持整体稳定性:
- 单一职责原则
- 开闭原则
- 里氏替换原则
- 依赖反转原则
与 DDD 和微服务的关系
六边形架构常与 DDD 和微服务一起提及,但它们之间没有必然联系。
微服务是一种架构风格,而 DDD 是架构设计方法。六边形架构是一种具体的编码实践,可以指导软件的架构设计。
一些资料
- Alister Cockburn 的六边形架构
- Udacity 的六边形架构纳米学位
- Visual Studio 的六边形架构支持
架构师的重要作用
软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。
有人认为:“认识源于实践,又指导实践,但只有正确的认识才能对实践有积极的指导作用。因此,在实践中必
①“认识来源于实践又指导实践,只有正确的认识才能对实践有积极的指导作用”,这句话正确揭示了实践与认识的辩证关系以及认识反作用的二重性,是正确的。 ②在实践中获取正确认识是必要的,但由于受主客观条件的限制,人们对一个具体事物的认识往往不可能经过实践到认识的一个过程就获得,而是需要实践到认识、认识到实践的多次反复,在这个过程中人们的错误总是难免的,只有经过不断纠正错误,才能获得正确的认识。 ③我们应该树立创新精神,充分发挥主观能动性,战胜挫折,自觉纠正错误,获得正确的认识。 |
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。