开放-封闭原则:
软件实体(类、函数、模块等)应该可以扩展,但是不可以修改!
(我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。构建抽象来隔离那些变化)
精神所在:面对需求,对程序的改动是通过新增代码进行的,而不是更改现有的代码。
里氏替换原则:
子类必须能替换掉它的父类。
也正因为有了这个原则,使得继承复用成为了可能,只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为(即无需修改父类情况下实现扩展 )。
依赖倒转原则:
抽象不应该依赖细节,细节应该依赖抽象。就是针对接口编程,而不是根据实现编程(例子:内存,电脑插口)
说白了,就是要针对接口编程,不要对实现编程.无论主板、CPU、内存、硬盘都是在针对接口设汁的,如果针对实现来设计,内存就要对应到具体的某个品牌的主板,那就会出现换内存X要把主板也换了的尴尬。
依赖倒转其实就是谁也不要依赖谁,处理规定的接口,都可以灵活自如。