架构师训练营 3 期 第二周作业
架构师训练营 3 期 第二周作业
作业1
1 请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
软件开发的新手期。写完一个功能模块A,供其他模块B调用,那么B的功能实现,就会依赖A。耦合严重。
而在真实项目种,随着一年年过去,需求不停的变化、深化 ,上面那种依赖会导致 返工、颠覆、废弃等情况,(可能还有更高层的问题,待以后填充)。
那么,如何解决上述问题呢?依赖倒置原则。
总体来说,一个模块,越概括、抽象、考虑全面(覆盖范围广),以后被重新修改的可能性越低。
那么就是 依赖倒置原则:
高层次模块,定规则定目标,通过接口实现——开关 本层只关心 “开(接口 = 目标)”、“关(接口 = 目标)”,怎么实现?,下一层去根据情况 自己具体实现。
下一层去实现上一层的需求,并给下层定义好规则接口
爸爸指挥儿子,你帮我去拿杯水。只说了需求,要杯水;而不需要说,如果水杯里没水怎么办?我的被子放到哪里了?如果在饭店,你该找谁要水?……
好莱坞原则。
我只能猜:导演、上级需要什么,就只说他的需求,也就是下级的做事目标,然后下级去具体实现。
2 请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
作业2 根据当周学习情况,完成一篇学习总结
一句话总结几个原则
1 开闭原则 OCP-Open/Closed Principle
开放功能扩展,封闭模块代码:目标是,扩展功能而不修改原模块。
2 依赖倒置原则 DIP -Dependency Inversion Principle
上层定规则、定目标;下层根据情况具体实现
3 里氏替换原则 LSP - Liskov Substitution principle
判断继承是否合理,就从行为的角度看看子类是否可以替代父类的位置
有时候,继承可能要改为 组合-委托。
4 单一职责原则 SRP -Single Responsibility Principle
这个类,只有一个原因让他变化。
同一职责、同一功能,纳入一类。
避免调用、打包软件,出现浪费,浪费可耻,当然,更重要的是变脆弱、更难移植。
有时候,实现SRP,是困难的。就需要用到ISP。
5 接口分离原则 ISP -Interface Segregation Principle
不要强迫模块,依赖不需要的方法,不要让不同的客户看到他们不需要的方法。
版权声明: 本文为 InfoQ 作者【ihiming】的原创文章。
原文链接:【http://xie.infoq.cn/article/df4783eb7b525b4c2f1aac946】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论