设计模式系列 · 封装、继承、多态

1
面向对象的三大特征

我们知道,面向对象有三大特征,分别是:

  • 封装

  • 继承

  • 多态

2
聊聊封装与继承
封装

因为对象都对自己负责,所以,对象的很多东西都不需要或者不可以暴露给外部。

《设计模式系列 · 封装、继承、多态》

  • 小明不需要将所有的信息告诉陌生人;

  • 手机不能不封装就把CPU、内存卡等等都暴露给用户,这太危险了(如下图)。

《设计模式系列 · 封装、继承、多态》

《设计模式系列 · 封装、继承、多态》

封装解决了数据的安全性,内在也体现了”每个对象都对自己负责”的原则。

《设计模式系列 · 封装、继承、多态》

继承

继承,没什么好说的,主要目的是解决了代码的复用。

但说到这里,我们知道实现代码的复用,有两种方式:一种是组合、一种是继承。

先给大家抛出一个问题:“什么时候该用组合?什么时候该用继承呢?

这个问题大家可以先想想,我们以后再讨论。

3
重头戏·多态
简单定义

对于多态,我们不妨先下一个简单定义:

同一个操作,作用于不同的对象,会产生不同的结果。

说白了,就是发出一个相同的指令后,不同的对象会对这个指令有不同的反应,所以称为多态。

《设计模式系列 · 封装、继承、多态》

我有2个对象,分别是 word、excel。
我们使用相同的操作 Ctrl+N。

相同的操作:
对于word是新建word文档;
对于excel是新建excel表格。

《设计模式系列 · 封装、继承、多态》

老师说:“同学们请描述下自己眼中的oop。”
每个学生对于这个相同的指令,有不同的反应。

《设计模式系列 · 封装、继承、多态》

‍多态有什么好处

《设计模式系列 · 封装、继承、多态》

多态最大的好处可以用2个词语来概括:“灵活”、“解耦”

耦合度的意思是模块与模块之间、代码与代码之间的关联度。
紧耦合也就是他们之间的关联度大,这样的代码是很难维护的,很容易出bug的。出现一个bug,其他bug很可能像滚雪球一样增长,猝不及防。

我们经常说:“要面向接口编程,而不是面向实现编程”。
多态性,也就要求我们面向接口编程。

不同的对象,相同的接口,但因为多态,有了不同的实现。
这样面向接口编程,就降低了耦合度,很灵活。

4
PHP中多态的实现

《设计模式系列 · 封装、继承、多态》

Talk is cheap,show me your code.

《设计模式系列 · 封装、继承、多态》

《设计模式系列 · 封装、继承、多态》

更多精彩,请关注公众号“聊聊代码”,让我们一起聊聊“左手代码右手诗”的事儿。

《设计模式系列 · 封装、继承、多态》

更多精彩,请关注公众号“聊聊代码”。

《设计模式系列 · 封装、继承、多态》

    原文作者:算法小白
    原文地址: https://juejin.im/entry/58da47ad1b69e6006bc67ce6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞