导图社区 设计原则SOLID
这是一篇关于设计原则SOLID的思维导图,包含单一职责、开闭原则、接口隔离、依赖反转等内容,需要可收藏。
社区模板帮助中心,点此进入>>
互联网9大思维
产品立项报告
产品经理如何做好项目管理
经验分享:产品经理必懂的产品思维
产品诞生过程
产品周期图
开门红的思考
招创智搜
网易星球
教学教务系统
设计原则 SOLID
单一职责 SRP
行为者 actor
职责 responsibility
明确行为者和职责之间的关系
开闭原则 OCP
一个设计良好的计算机系统应该在不需要修改的前提下就可以轻易被扩展
是我们研究软件架构的根本目的
MVC 分层理念
Model
View
Controller
明确依赖关系
组件化 实现OCP
里氏代换 LSP
1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的
继承
抽象函数
override
ovrewrite
子类可以扩展父类的功能,但不能改变父类原有的功能
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 子类中可以增加自己特有的方法。 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
接口隔离 ISP
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
任何层次的软件设计如果依赖了它并不需要的东西,就会带来意料之外的麻烦。
接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
依赖反转 DIP
多用抽象,少用具体实现
抽象可以具体动态实现,具体实现难以改变,且一旦修改可能影响其他依赖方
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
低层模块尽量都要有抽象类或接口,或者两者都有。 变量的声明类型尽量是抽象类或接口。 使用继承时遵循里氏替换原则。
参考:https://wiki.jikexueyuan.com/project/java-design-pattern-principle/