架构设计之学新而知故

缘由

因为一些特殊的机缘,接触到洋葱架构等一些新架构设计概念。

尝试理解了一段时间,就想简单梳理下对它们的理解,以达到学新而知故 😃

信息增益

以前计算机专业并不设置通信领域的信息论的专业课程,但是,信息论的知识,应该是每个计算机从业者必知必会的概念。

区别信息之间的相同与差别,找出相同和不同,才能将掌握的信息量增加,以达到学新而知故!

  • 集中精神、注意观察、多试几次!

多试几次这步,信息量的增加是核心要诀,不然,都是无效的徒劳

所以,我总在信息量不增加的情况下,宁肯抱残守缺,并不选择继续重试,必须在找到新方法、新工具、新视角情况下,展开下一次尝试!

以前积累的架构设计

  • 分层设计
  • MVC设计

新学习的架构

  • 六边形架构
  • 洋葱架构

架构设计更高层面的哲学

  • 高内聚、低耦合
  • 单一职责
  • 依赖倒置,利用稳定接口将变化隔离
  • 稳定之锚必须存在,不然,无法建构一个系统,犹如在沙滩上搭建房子一般
  • 即使是依赖倒置这种场景,也有稳定的部分和变化的部分

分层设计

分层设计,层次之间拥有稳定的接口,但层次与层次之间在细节上无关的,代表着高内聚和低耦合、单一职责设计原则指导下的隔离。

其典型代表是网络协议栈

当协议栈处理网络层IP协议时,并不需要关心传输层TCP/UDP层的具体报文,而仅仅将其看成有效载荷,进行无差别的处理而已。

在这里插入图片描述

  • 另外,分层设计需要注意自举能力,通过功能分解,最终完成大功能的自举过程

MVC设计

MVC设计,按照职责进行分割系统,如以用户为视角,从前端View,到中台Controller,再到数据后端Model。

在这里插入图片描述
从结构上来看,与分层设计并无太大区别,但是,具有新意,在WEB系统场景,使得对于理解和实践分层设计很有帮助。

六边形架构和洋葱架构

两种新的架构,着重于依赖倒置原则,将依赖外悬进行适配,或分出不同的圈层进行隔离,以利于核心业务层的稳定。

如果说,分层设计对上层的依赖仅为有效载荷的假设,六边形架构和洋葱架构,则允许更多的假设,
但采用依赖倒置的办法,在外层圈层将这些依赖固化后,而在核心层可以进行无差别的接口假设进行执行。

六边形架构和洋葱架构,退化来看,也是一种分层设计,但还是有所着重。在适应的场景,用其进行建构更方便,用其长处!

当分层演变为多边形

在这里插入图片描述

当简单的分层设计出现比较严重跨层的耦合时,例如,途中红色的线,实际上出现多边形结构。

这时看是否设计上向六边形架构和洋葱架构靠拢。

六边形架构

在这里插入图片描述

洋葱架构

在这里插入图片描述

树形架构

以前刚毕业时,自己也曾有:在枝叶处确定细节,在主干区无差别地进行共同处理

此种无名气的设计思想,是否也可以理解为,在六边形架构和洋葱架构之外,另外一重诠释呢?

设计的稳定之锚

纵观各种架构设计,居于内层的领域模型,必须是稳定之锚。

然后,合理地区分变化和稳定的关系,迭代、重构开发,谁也无法提前理解全部,哈哈

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值