(正规博彩十大app排名) iOS 单独创建一个协议文件(Protocol)的意义在哪里?

问题是 ,我们都知道 委托和代理是一种设计模式。那么问题来了,既然一个类中可以单独的写一个协议出来,像Category或者Extension 一样。可以直接在当前类里面写出来。当然单独创建出来也有用处。

 但是一个单独创建协议的文件(Protocol)意义何在。是封装一些方法吗,还是干什么。如果是封装一些方法,继承自NSObject的类,好像没有什么东西可以触发让他在关键时候实现对象的方法,就算遵守了其他协议,那也没有实现啊,怎么调用。如果是定义一套标准出来,那这个标准意义在哪里哪,请求大牛,给我解惑!!万分感谢!

这是个面向对象的问题,协议是抽象的,只是描述不同事物的一些共性,比如说飞吧, 飞机和鸟都会飞,他们都实现了飞协议,但是他俩的实现方式是不一样的,那么飞这个协议是不是就应该单独定义呢?有一天可能人也会飞了,那么人去实现飞协议就可以了。

回到 iOS 里, 比如说 NSArray 实现了 NSFastEnumeration 协议, NSDictionary,NSSet 也都实现了 NSFastEnumeration 协议,虽然它们的实现方式是不一样的,但是它们都可以 fast enumeration,就跟飞机和鸟都会飞是一样的,当你需要一个可以 fast enumeration 的对象时,你就不用管它具体是 NSArray 还是 NSDictionary, 只要是一个服从 NSFastEnumeration 协议的对象即可。我想这大概就是你说的那套标准的意义吧。

Objective-c 面向对象的C, 继承概念体现在单类继承,用协议实现C++中的多类继承,避免一个子类继承多个父类时的复杂性,使类层次结构扁平。
比如车作父类,下面有两个子类燃油车和电动车,若需要混合动力车,按多父类继承,混合动力车需要继承两个父类,类层次为三层;但若是用协议方式,混合动力车实现燃油和电动协议,类层次只需要两层。

http://www.jianshu.com/p/ae7472664afc可以看下这个,我的理解是为了解耦

发表评论

电子邮件地址不会被公开。 必填项已用*标注