- 一句话说明六大原则
单一职责原则,SRP: 功能职责单一, 只能拥抱一种变化。
里氏替换原则,LSP: 所有在使用父类的情况,都可以用子类替换。 继承的子类不能改动父类已实现的功能。
依赖倒置原则,DIP: 高层通过抽象依赖低层,细节应该依赖抽象,抽象不应该依赖于细节。
接口隔离原则,SIP: 从某种程度上看,接口隔离原则就是接口版的单一职责原则。客户端不应该依赖它不需要的接口。使用多个专门的接口比使用单一的总接口要好。
迪米特原则,LOD: 也称最少知识原则。
- 只和朋友交流(直接的朋友): 朋友的定义, 出现在成员变量、方法的输入输出参数中的类。 方法体中的不算。 即方法体中尽量不要出现非朋友类。
- 朋友之间也有间隔:过于亲密,耦合就变得异常牢固。判断一下是否可以减少public方法和属性,改为private、package-private、protected访问权限,及是否可以加上final关键字。
实践:
- 类设计上,降低类和成员的访问权限, 只要可能,设计成不变类。
- 谨慎使用序列号(类在客户端变更,却未在服务端同步更细,会引起反序列化失败)。
- 不暴露类成员,而是提供访问器。
开闭原则,OCP: 软件实体如类、模块和函数,对扩展开放,对修改关闭。
- 接口层面的修改: 方法参数避免基本类型, 基本类型导致接口的不稳定。
- 具体实现的修改: 类的封装内容尽量保证不变。
- 扩展: 通过多态进行扩展