为什么学习软件设计原则,个人理解
1.规范代码
2.便于维护
在实现一个功能时,不需要考虑很多设计,直接怎么方便怎么写;但是当有10个100个功能业务时,就需要考虑怎么设计怎么规范代码,让代码可以读,更好读,更方便维护,适应迭代。现在有的7个原则,也是在语言应用久之后衍生的经验之谈。
开闭原则
开闭原则,对修改关闭,对扩展开放
这一点在敏捷开发中体现更深刻,敏捷上线频繁;遵循开闭原则,尽量扩展,减少修改;如果每次有需求修改原代码,而且代码可能由很多人写。一可能有问题,二修改之后就需要测试;而且如果修改多之后可能很难适应前后的每一次需求,会改不动。所以尽量新增而不修改。
依赖倒置
依赖倒置,会使得实现更清晰。先不考虑实现而是考虑抽象,开发前有了抽象就可以构建出整个应用,这个时候就可以给产品、需求评审是否可行,构建抽象再实现,每个功能再具象实现。上层(架构)就可以不关注实现
单一职责
单一职责,应该是也体现了开闭原则的,一个类或者方法不要掺杂太多逻辑,现在可能没问题,之后可能就需要修改,所以尽量拆开逻辑,逻辑会更清晰,修改方便。比如有的接口会把新增跟修改放在一起,这样一个接口就会有很多逻辑,不便修改,会增加很多if结构,逐渐很难读很难维护
接口隔离
接口隔离,也有单一的思想,因为接口是需要实现的,如果有很多功能,那么实现类就会有很多逻辑,有的可能只需要实现一个方法实现,就会需要实现很多空方法;所以一个功能放一个接口中,实现类实现的都是有用的方法,而不会存在实现没有用的方法,语义上也读不懂,逻辑不通。
迪米特
迪米特原则,体现解耦的思想,解耦就是为了高内聚、低耦合。类之间尽量减少关联,不需要知道的就不需要知道,避免修改时产生关联
里氏替换原则
读不太懂,避免继承泛滥
合成复用原则
聚合 has-a 组合 contains-a 继承 is-a
尽量使用聚合组合,减少使用继承,继承太重。