设计模式iOS学习笔记

还在用继承吗?你out了

2015-12-16  本文已影响227人  Hollylord

对于面向对象语言,继承是其最大的特点,但是继承不是万能的,切继承有很多弊端。今天题主写这篇文章的目的,就是为了能让大家看到继承的不好,并用一种新的替代方式-- 协议

继承有哪些猫病?

放弃继承用协议吧!

那到底怎么解决呢? 首先,题主想声明一下:继承多用来定义一个类是什么;协议多用来定义一个类能做什么。这句话很关键,希望大家仔细揣摩。其次,题主的传递的核心思想就是让大家尽量少用继承,多用协议
协议是干嘛的?就是用来解耦的,用来声明方法的。那好了,我们换协议来处理这些问题。

例如IronMan,它是个人,那么他就继承自Human;然后我们写一个Fly的协议,只要他能飞,他就遵守这个协议。
再比如:哈士奇继承自Dog,跑这个能力就用协议来定义,如果这只哈士奇能跑,就让它遵守Run这个协议,否则它就不用遵守,他就不能跑。

这样做的好处是什么?就是大大降低了代码的耦合性,提高了代码的重用性。记住:继承父类的属性(一个类是什么),扩展子类的能力(一个类做什么)。

上一篇 下一篇

猜你喜欢

热点阅读