Category和protocol区别

1.利用继承,多态是一个很好的保持“对扩展开放、对更改封闭”(OCP)的办法,也是最常见的一种方法。Objective C还支持另外两种语法来支持OCP:Protocol和Category。

2.Category可以为类提供额外的接口和实现。

3.protocol的作用是为一些列类仅仅提供一套公用的接口,而完全没 有办法也没可能去提供具体的一些实现情况;category则是为一个已有的类提供一些额外的接口和具体实现;

4.继承则基于两者之间,既可以想 protocol一样提供只是纯粹提供接口,也可以像Category一样提供完整的实现,而且继承还能对类以后的功能进行改写,所以说继承的力量是最强 大的。那么具体在使用的时候各自都适合什么样的情况呢?

5.Protocol是定义行为而不管谁去怎么实现,这是一种比较洒脱的情况,就好像在外包项目中的客户一样,他只是他需要什么什么东西,具体实现他不会也不能给出一样。
delegate datasource这样的就用protocol实现比较好

6.Category是对一个功能完备的类的一种补充,就像是一个东西的主要基本功能都完成了,可以用category为这个类添加不同的组件,使得 这个类能够适应不同情况的需求(但是这些不同需求最核心的需求要一致)。找个就像你已经有了一辆能够开动的汽车一样,我们可以用Category为你的汽 车添加各种之前没有的功能,最后让这辆汽车变成超级跑车一样。

设计模式之开放-封闭原则(引申出Objective-C中继承、Category、Protocol三者的区别)
https://www.cnblogs.com/ziyi--caolu/p/4806953.html

众所周知,OC是单继承,新出的Swift也是单继承。(只有一个父类)那么在iOS开发中,我们怎么实现类似多继承的关系?
事实上,我们可以利用OC中的Category和Protocol来达到多继承的效果。
Protocol只是声明一套接口,并不能提供具体实现,变相的也算是一种抽象基类的实现方式

1.Protocol只能提供一套公用的接口声明,并不能提供具体实现,它的行为是,我只负责声明,而不管谁去实现,去如何实现。这样的话,我定义一套接口,可以使任意的类都用不同的方式去实现接口中的方法,就是为遵守了protocol的类提供了一些额外访问这个类的一些接口,像delegate和dataSource用protocol实现是最好的。

2.Category可以为已有的类提供额外的接口和具体的实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值