协议(Protocol)
协议的声明看起来比较类似一个类的接口,不同的是协议没有父类也不能定义实例变量。协议是一种特殊的程序设计结构,用于声明专门被别的类实现的方法。它是一组方法,自己不去实现,专门给别的类去实现。
协议在以下场合非常有用:
1、需要由别的类实现的方法
2、声明未知类的接口
3、两个类之间的通信
协议的基本特点
1、协议可以被任何类实现的方法(弥补OC的单继承)
2、协议本身不是类,它是定义了一个其他类可实现的接口
3、类目也可以采用协议
协议的声明与实现
协议中的关键字:
@required表示必须强制实现的方法
@optional表示可以有选择性的实现方法
//协议的声明
@protocol HelloProtocol<NSObject>
@optional
-(void)optionalMethod1;
-(void)optionalMethod2;
@required
-(void)requiredMethod1;
@end
//采用了该协议
#import"HelloProtocol"
@interface Person : NSObject
<HelloProtocol,OtherProtocol>
@end
@implementation Person
-(void)requiredMethod1{
}//实现了该协议中的方法,且方法必须实现
-(void)optionalMethod1{
}//实现了该协议中的方法,可以选择不实现
-(void)optionalMethod2{
}//实现了该协议中的方法,可以选择不实现
@end
代理(委托)设计模式
代理是指一个对象提供机会对另一个对象中的行为发生变化时做出的反应。如,当你将一颗石子(对象1)丢入水中(行为发生变化,之前可能在你的手中)时,水面(对象2)泛起波纹(做出的反应)
代理设计模式的基本思想:两个对象协同解决问题,通常用于对象之间的通信。
代理设计模式的基本特点:
1、简化了对象的行为,最小化了对象之间的耦合度
2、使用代理,一般来说无需子类化
3、简化了我们应用程序开发,既容易实现,又灵活