当时,项目中有个需求让画柱状图折线图表格,无意间看到了一个非常好的 Swift 库,是安卓的 iOS 是实现版,思路清晰,建议学习。Charts
为什么我要先说这个库呢,因为我觉得它用到了面相协议的思想,比如绘制,数据, 表格等 Provider。
- 说的好听点,就是组件化了,每个组件负责自己的事情,通过 Protocol 向外传输职责的能力.
- 还可以这么说,就是抽象类,类似于接口, 也类似于多继承。
- 面向协议其实是建立在面向对象的基础上,这些对象具有共同的行为,称之为遵守某种协议,也就是抽象出来的面相协议。
- 我不关心内部实现,我只关心行为。你可以吃饭,他也可以吃饭,但我只关心吃饭这件事儿,并不关心你们怎么吃的,吃的啥。。。 也就是组件化,你吃你的,他吃他的,你们自己实现怎么吃,我只下命令该吃饭了!
引用网上说的:
简单来说,面向协议编程是在面向对象编程基础上演变而来,将程序设计过程中遇到的数据类型的抽取(抽象)由使用基类进行抽取改为使用协议(Java语言中的接口)进行抽取。更简单点举个栗子来说,一个猫类、一个狗类,我们很容易想到抽取一个描述动物的基类,也会有人想到抽取一个动物通用的协议,那后者就可以被叫做面向协议编程了。什么?就是这样而已?苹果官方那么正式的称Swift是一门支持面向协议编程的语言,难道就是这么简单的内容?当然不会,有过面向对象编程经验的人都会清楚,协议的使用限制很多,并不能适用于大多数情况下数据类型的抽象。而在Swift语言中,协议被赋予了更多的功能和更广阔的使用空间,在Swift 2.0中,更为协议增加了扩展功能,使其能够胜任绝大多数情况下数据类型的抽象,所以苹果开始声称Swift是一门支持面向协议编程的语言。