单一职责原则
一个类只负责一项职责
难点
这个“单一”是怎么界定的,每个人都有自己的看法,需要根据个人经验一级具体的业务逻辑来确定
但是,其基本的指导原则是:两个完全不同的功能就不应该出现在同一个类中,一个类中应该是一组相关性很高的函数、数据的封装
里氏替换原则
所有引用基类的地方必须能透明的使用其子类对象
难点
如何建立抽象
里氏替换的核心原理是抽象,将公共的行为进行抽象,不同子类实现不同的行为
优点
提高代码复用性,提高代码可扩展性
缺点
由于抽象依赖于继承这个特性,所以缺点是有侵入性,代码冗余,灵活性低,只要继承就会拥有父类所有的方法和属性
依赖倒置原则
调用者不依赖被调用者,不发生直接的依赖关系,而是两者都依赖其抽象,也就是依赖关系通过接口和抽象类来实现。
依赖倒置原则是面向接口编程的体现
优点
如果类和类之间是直接依赖,一旦被调用者发生修改变化,调用者一般也会伴随着修改,通过依赖倒置原则
提高的程序的可扩展性,从而提高了程序拥抱变化的能力
接口隔离原则
设计接口功能时尽可能的细粒度,让客户端依赖的接口尽可能的小
优点
让代码有更低的耦合,提高灵活性,可以拥抱变化
迪米特原则/最少知识原则
一个对象应该对其它对象有最少的了解,类之间关系越密切,耦合越大,当类需要修改的时候,对所关联的类影响也越大。
优点
让代码有更低的耦合,提高灵活性
开闭原则
对扩展(指继承)开放,对修改关闭
难点
①”在软件开发过程中,最不会变化的就是变化本身“,在开发过程中,只通过继承的方式来维护代码是一个理想的情况,所以
在开发过程中,应该尽量使用开闭原则,但是此原则并不能替代通过修改来维护代码的方式。
②开闭原则的核心是抽象
优点
代码灵活,扩展性高