架构师训练营 - week2 - 作业 1

用户头像
month
关注
发布于: 2020 年 09 月 27 日
  1. 依赖倒置原则



传统的面向过程编程原则是:自顶向下,逐步细化,模块化。

这样设计的系统就会出现金字塔模式的模块结构。如下图



高层模块需要组装底层提供的功能,拼凑出更抽象的目的。



如果不考虑变化,这种方式当然可以构建出良好结构的代码。但是,如果现在高层抽象目的没有变,只是处理的逻辑变了。



如果我们模拟这种改动:中层模块B不要组装 底层模块B,要替换到底层模块A,同时原来底层模块A的代码需要适配这个情况的引入,带来的问题

  • 直接改动范围是中层模块B和底层模块B,潜在可能影响中层模块A。大多数的bug都是潜在影响没有考虑到

  • 越是高层的变动,影响范围就越广。实际开发中,每个需求都是抽象的现实世界业务,都不是底层的IO操作。

  • 按照职责和开发顺序,必须底层先开发,然后中层开发,最后高层。更大概率的是,高层发现提供的功能不符合预期,需要中层增加功能,然后再传到到底层。一个功能的开发需要多遍一起调试,如果是多个开发进行开发,直接就是地狱式开发



这个问题的核心是高层需要依赖底层。依赖倒置原则就是反转这种依赖关系,高层先定抽象功能定义,底层依赖抽象并给出实现。这样的目的是

  • 并行开发。只有抽象定义清楚,高层和底层可以同时开发,无需多次联调测试

  • 变化影响范围可控。只要抽象不变,改变的只会发生在一端,要不高层改要不底层改,不会发生同时都要改。



  1. 接口隔离原则类图



发布于: 2020 年 09 月 27 日 阅读数: 17
用户头像

month

关注

还未添加个人签名 2013.12.26 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - week2 - 作业1