什么是对象
对象具有状态、行为和标识。
- 状态:每个对象可以有自己的数据(属性)
- 行为:每个对象可以产生行为(函数)
- 标识:表明每个对象都区别于其它的对象(地址)
面向对象编程的三要素
- 封装
- 继承
- 多态
面向对象设计的基本原则
Open Closed Principle:开闭原则
一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭
Dependence Inversion Principle:依赖倒置原则
上层模块不应该依赖底层模块,它们都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。
DIP倒置了什么?
- 模块或包的依赖关系
- 开发顺序和职责
软件的层次化
- 高层决定低层
- 高层被重用
Single Responsibility Principle:单一职责原则
一个类应该只有一个发生变化的原因
Liskov Substitution Principle:里氏替换原则
所有引用基类的地方必须能透明地使用其子类的对象
Law of Demeter:迪米特法则
只与你的直接朋友交谈,不跟“陌生人”说话
Interface Segregation Principle:接口分离原则
ISP - Interface Segregation Principle
- 不应该强迫客户程序依赖他们不需要的方法
ISP和SRP的关系
- ISP和SRP是相关的,都和内聚性有关
- SRP指出应该如何设计一个类——只能有一种原因才能促使类发生改变
- ISP指出应该如何设计一个接口——从客户的需要出发,强调不要让客户看到他们不需要的方法