1 面向对象的基本原则
1.1 抽象类与接口区别
-
抽象类
- 继承,表示 is a 关系
- 人是动物
- 继承,表示 is a 关系
-
接口
- 复用, 表示 has a关系
- 人 has a 手
- 复用, 表示 has a关系
-
组成维度
- 类
- 职责 单一职责原则
- 权限 开闭原则
- 继承类
- 合成/聚合复用原则
- 实现接口
- 隔离 接口隔离原则
- 字段/方法参数
- 依赖倒置原则
- 迪米特法则
- 里氏替换原则
- 类
import java.io.Serializable;
/**
* Main class
* 职责(单一职责原则)
* 继承类 合成/聚合复用原则
* 实现接口 接口隔离原则
* 类相关权限 开闭原则
* @date 2020-11-23
*/
public class Main extends Object implements Serializable {
// 字段 或者方法参数 是否需要加入 考虑 迪米特法则
Integer fied; // 考虑 依赖倒置原则,里氏替换原则
}
1.2 单一职责原则
- 一个类只负责一项职责
- 优点
- 降低类的复杂度,一个类只负责一个之职责,逻辑比负责多个简单
- 提供类的可读性能,提高系统的可维护性
- 变更引起风险降低了。
1.3 里氏替换原则
- 任何基类可以出现的地方,子类一定可以出现
- 子类可以扩展父类的功能,但不能改变父类原有的功能
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
- 子类中可以增加自己特有的方法
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格
1.4 开闭原则
- 定义: 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
- 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
- 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化
1.5 迪米特法则(最少知道原则)
- 一个对象应当对其他对象的细节有尽可能少的了解。
- 一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立
1.6 依赖倒置原则
- 要依赖于抽象,不要依赖于具体。
- 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象
1.7 接口隔离原则
- 接口尽量单一,只代表一个角色。
- 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
- 要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。
1.8 合成/聚合复用原则
- 要尽量使用合成和聚合,尽量不要使用继承。
网友评论