设计模式前传之面向对象基础

Posted by 程序亦非猿 on 2015-09-06

前言

PS:本人边学变写,由于本人能力有限,所以在理解、解释等各方面一定会有所欠缺,如果有什么不对或者不足之处,非常欢迎各位在各种渠道批评指点!
另外设计模式系列会跟随自己的能力or理解or别人的指导不定期更新

面向对象(Object-Oriented,OO)是基础中的基础,亦是重中之重.
面向对象学得好,才能顺利地往设计模式的方向继续前行.

JAVA面向对象最重要的特征就是:封装,继承,多态(所谓的三大特征)。
就个人体会来简单讲一下.

封装

封装通过合并特征和行为来创建新的数据类型.

个人体会:

优点

封装有个好处是实现隐藏:
通过将细节私有化把接口和实现分离开来.

个人觉得封装的主要意义有:

  1. 保护私有数据,只提供方法给外部调用
  2. 抽象出方法,做成util,统一处理,复用,提高效率

缺点

记住不要过度封装!

继承

在Java中,对应extends关键字.

个人体会:

优点

子类继承父类后拥有父类的属性成员,可以很好的复用已有的类,不需要再重复写方法属性了.

缺点

刚开始学习继承的时候很喜欢用,但是后来渐渐地发现继承其实有很大的缺点:

  1. 继承很重,子类拥有父类的所有东西,不管要不要,有没有用.
  2. 父类一改,牵动所有的子类,很明显这不是我们所希望发生的.

所以提倡组合,而少用继承.

多态

在面向对象的程序设计语言中,多态是数据抽象和继承之后的第三种基本特征.
多态也称作动态绑定、后期绑定或运行时绑定.

个人体会:

多态通过分离做什么和怎么做,从另外一个角度将接口和实现分离开来

多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序。

说多态是最重要的基本特征也不为过吧。

多态的优点

  1. 扩展性
  2. 灵活性
  3. 可替换性
  4. 可扩充性
  5. 简化性

多态的作用:

  1. 消除类型之间的耦合关系
  2. 可实现动态绑定,增加可扩展性.

多态在设计模式中扮演着非常非常重要的角色.
策略模式,里氏替换原则等就是多态的特性的最好阐述.

缺点

  1. 在定位代码的时候比较麻烦,需要去寻找具体的实现类。(有时候根本找不到- -)

资料:

Thinking in Java
Effective Java