对SOLID设计原则的个人总结
写每个模块,每个组件,每个函数,甚至每行代码的时候,都要想到使用solid原则如何设计如何写,这样你的代码才会充满着SOLID的气息。
SRP(单一职责原则)
任何一个软件模块只对某一类行为者的价值负责
- 每个类或者模块,各司其职,做的事情不重复
- 如果有多个角色的需求让同一模块更改,那这个模块肯定有问题的,需要拆分
栗子:
你去餐馆订餐吃饭,餐馆存在顾客,服务员,厨师三个角色
作为顾客,你只做)(列出菜单,传给服务员)这件事
作为服务员,你只做(调用准备饭菜这个方法(对厨师喊“该炒菜了”))这件事
作为厨师,你只做(听到要炒菜的请求,就立即去做饭,最后输出菜)这件事
LSP(里氏替换原则)
所有基类的地方,都可以换成子类,程序还可以正常运行,这个原则与面向对象语言的继承特性不谋而合,异曲同工之妙
鸵鸟到底是不是鸟
合理?
DIP(依赖反转原则)
高层模块不应该依赖于底层模块,两者都应该依赖其抽象。
抽象不应该依赖细节。
细节应该依赖抽象。
小明想吃苹果如何实现
ISP(接口隔离原则)
不依赖任何不需要的方法、类或者组件。该原则指导我们的接口设计
OCP(开闭原则)
设计良好的软件应该易于扩展,同时抗拒修改
关键:后续扩展,尽量少的修改代码