单一职责就是一个类只有一个功能或职责。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这个类完成其他职责的能力。这种耦合回导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。
如果你能够想到多于一个的动机去改变一个类。那么这个类就具有多于一个的职责。
开放封闭原则是面向对象设计的核心所在。我们应该把项目中能频繁做出变化的那部分做出抽象。如果我们设计的够好,那么带给我的好处,就是可维护,可扩展,可复用,灵活性好。
但是我们拒绝对每一部分进行刻意的抽象。
开放封闭原则:是说软件实体(类,模块,函数等等)应该可以扩展,但是不可以修改。
我们应该做到我们的设计对于扩展开放,对于更改封闭。但是绝对的修改关闭是不可能的。只能说尽量避免。
依赖倒置(依赖倒转)原则:其实可以说是面向对象设计的标志。
依赖倒置原则原文解释是抽象不依赖于细节,细节应该依赖于抽象。就是针对接口编程,不要对实现编程。
依赖倒置原则:高层模块不应该依赖底层模块,两个都应该依赖抽象。
抽象不应该依赖于细节,细节应该依赖于抽象。
倒置:就是面向过程的开发时,为了使得常用的代码可以复用。一般会把这些常用的代码写成许许多多函数的程序库,这样我们在做新项目时,去调用这些底层的函数就可以了。比如:我们在做的项目大多要访问数据库,所以我们就把访问数据库的代码写成函数,每次做新项目时就去调用这些函数。也就是高层模块依赖底层模块。
里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。
里氏替换原则:子类型必须你能够替换它们的父类型。
只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。