面向对象设计的几个基本原则

2016年03月04日 原创
关键词: java 设计模式
摘要 本文介绍了面向对象设计的几个基本原则,遵守这些原则有利于项目的扩展和维护。

一、开-闭原则

让设计对扩展开放,对修改关闭。即当一个设计中增加新的模块时,不需要修改现有的模块。

当设计某些系统时,经常需要面向抽象来考虑系统的总体设计,不要考虑具体类,这样就容易设计出满足“开-闭原则”的系统,在程序设计好后,应当对abstract类的修改关闭。

二、多用组合少用继承原则

1.继承与复用的优缺点。

通过继承来复用父类的方法的优点:

  • 子类可以重写父类的方法,易于修改或扩展那些被复用的方法。

通过继承来复用父类的方法的缺点:

  • 子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为。
  • 子类和父类的关系是强耦合关系,父类的方法的行为更改时,必然导致子类发生变化。
  • 通过继承进行复用也称“白盒”复用,其缺点是父类的内部细节对于子类而言是可见的。

2.组合与复用。

一个类可以把其他类的对象作为自己的成员变量,然后就可以调用其他类的方法来进行复用。

通过组合对象来复用方法的优点:

  • 通过组合对象来复用方法也称“黑盒”复用,因为当前对象只能委托所包含的对象调用其方法,这样一来,当前对象所包含对象方法的细节对当前对象是不可见的。
  • 对象与所包含的对象属于弱耦合关系,因为,如果修改当前对象所包含的对象类的代码,不必修改当前对象类的代码。
  • 当前对象可以运行时动态指定所包含的对象,比如可以通过setter指定。

通过组合对象来复用方法的缺点:

  • 容易导致系统中的对象过多。
  • 为了能组合多个对象,必须仔细地对接口进行定义。

三、高内聚-低耦合原则

如果类中的方法是一组相关的行为,则称该类是高内聚的,反之称为低内聚的。高内聚便于类的维护,而低内聚不利于类的维护。

所谓低耦合就是尽量不要让一个类含有太多其他类的实例引用,以避免修改系统的其中一部分会影响到其他部分。