架构师训练营 - week2 - 作业 1
依赖倒置原则
传统的面向过程编程原则是:自顶向下,逐步细化,模块化。
这样设计的系统就会出现金字塔模式的模块结构。如下图
高层模块需要组装底层提供的功能,拼凑出更抽象的目的。
如果不考虑变化,这种方式当然可以构建出良好结构的代码。但是,如果现在高层抽象目的没有变,只是处理的逻辑变了。
如果我们模拟这种改动:中层模块B不要组装 底层模块B,要替换到底层模块A,同时原来底层模块A的代码需要适配这个情况的引入,带来的问题
直接改动范围是中层模块B和底层模块B,潜在可能影响中层模块A。大多数的bug都是潜在影响没有考虑到
越是高层的变动,影响范围就越广。实际开发中,每个需求都是抽象的现实世界业务,都不是底层的IO操作。
按照职责和开发顺序,必须底层先开发,然后中层开发,最后高层。更大概率的是,高层发现提供的功能不符合预期,需要中层增加功能,然后再传到到底层。一个功能的开发需要多遍一起调试,如果是多个开发进行开发,直接就是地狱式开发
这个问题的核心是高层需要依赖底层。依赖倒置原则就是反转这种依赖关系,高层先定抽象功能定义,底层依赖抽象并给出实现。这样的目的是
并行开发。只有抽象定义清楚,高层和底层可以同时开发,无需多次联调测试
变化影响范围可控。只要抽象不变,改变的只会发生在一端,要不高层改要不底层改,不会发生同时都要改。
接口隔离原则类图
版权声明: 本文为 InfoQ 作者【month】的原创文章。
原文链接:【http://xie.infoq.cn/article/b18134784d63f9d1c087df46e】。文章转载请联系作者。
评论