架构师的抽象能力及抽象跳跃

某架构师讲到:架构的本质是管理复杂性,抽象、分层、分治和演化思维是工程师 / 架构师应对和管理复杂性的四种最基本武器

后来与其他几位专家沟通,他们也一致认为“抽象能力”是架构师最关键的核心能力。

如何理解这样的抽象能力,举个简单的例子,在设计一个电商网站在处理订单时,一般流程包括:更新库存、打折计算、支付卡校验、支付、送货。整个流程中的抽象是在同一个层次上的,比较清晰易于理解。经验少的程序员在实现这个流程的时候代码层次会跳,比方说主流程到支付卡校验一块,他的代码会突然跳出一行某银行 API 远程调用,这个就是抽象跳跃

  • 分层
    尽可能将系统的各个模块划分清楚,模块间的调用要有层次感,比如MVC的架构理念就是一种分层思想,将控制器/业务逻辑/数据交互分为主流程的三个模块,他们之间的调用是有层级的,比如首先是控制器,其次是业务逻辑,最后是数据交互。
    对复杂的系统业务进行分层,把拥有一定复杂度的相似功能的模块作为子系统独立运行,比如将支付相关的服务提供一套独立的系统供其他系统调用。不同子系统之间的松耦合,将极大的方便系统维护和开发,提升生产应用的稳定性。
    将一个业务需求分层,明确每个层次解决什么问题也一目了然,这样系统会显得层次分明、简洁明了。
  • 分治
    分治算法思想将一个问题等价划分成若干子问题,子问题是可以获得结果的,然后通过汇总最终解决原问题。比如对大文件的分析处理,可以将文件进行拆分,从而解决性能和效率问题;或者结合递归思想,从最小的结果逆向运算得到原问题的解。
  • 抽象层次
    模块之间的层次关系,有可能是强依赖的纵向应用,比如上述提到的MVC模块划分,也有可能是松耦合的横向应用,比如订单模块与支付模块,它们可能共存于同一个业务逻辑单元被调用,但也可能被独立的访问。
  • 抽象跳跃
    抽象跳跃指的是代码逻辑混杂,没有很好的区分模块间的调用层次。区分模块的作用在于封装同类型的实现,使得主业务流程的代码有更高的可阅读性。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值