面向对象设计的三大基本特征和六大基本原则
三大基本特征
封装
封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员
继承
继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为,继承机制可以很好的描述一个类的生态,也提高了代码复用率
多态
多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
多态的优点:
- 1. 消除类型之间的耦合关系
- 2. 可替换性
- 3. 可扩充性
- 4. 接口性
- 5. 灵活性
- 6. 简化性
多态存在的三个必要条件:
- 继承
- 重写(子类继承父类后对父类方法进行重新定义)
- 父类引用指向子类对象
六大基本原则
单一职责原则
不要存在多于一个导致类变更的原因,即一个类只承担一个职责。
开放-封闭原则
对扩展开放,对修改封闭。无论模块多么封闭,都会存在一些无法对之封闭的变化,既然不能完全封闭,我们必须对于自己设计的模块应该对哪种变化封闭做出选择,必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离这些变化。这样我们才能开发出可维护、可扩展、可复用、灵活性好的程序。
迪米特原则
一个对象应该对其他对象有最少的了解,减少类与类之间的耦合。如果两个类不必彼此通信,那么这两个类就不应当发生直接的相互作用。类与类之间的耦合越弱,越有利于复用,一个处于弱耦合的类被修改,不会对有关系的类造成波及。
依赖倒转原则
上层模块不要依赖底层模块,它们都要依赖于抽象。抽象不能依赖于细节,细节要依赖于抽象。面向接口编程,不要面向实现编程。
里氏替换原则
子类型必须能够替换掉它们的父类型。只有当子类可以替换掉父类,软件单位的功能不受影响时,父类才能真正的被复用,而子类也能够在父类的基础上增加新的行为。
接口隔离原则
客户端不应该依赖于它不需要的接口,一个类对一个类的依赖应该建立在最小的接口上。不要让与自己无关的修改影响到自己功能模块的变化。