代理设计模式

来源:互联网 发布:js怎么获取多个id 编辑:程序博客网 时间:2024/05/17 23:06

Objective-C中的协议(Protocol)类似于常用的接口,协议(Protocols)中定义的方法,在类中实现。协议(Protocol)通常用来实现委托对象(Delegate Object)。委托对象(Delegate Object)一般用来自己定义行为或者动作,也就是调用自己定义方法,但自己不实现该方法,委托其它的类来实现该方法。


    以买票为例,现在没票了,找个代理买
    
    1、首先定义一个协议,即声明协议
 @protocol TicketDelegate <NSObject> //返回票价 - (double)ticketPrice; //还剩下多少张票 - (int)leftTicketsNumber; @end

 
    2、代理遵守这个协议
     
    @interface Agent : NSObject <TicketDelegate>    @end


    3、在Person类中,声明@property需要遵守协议的变量,然后声明一个买电影票的方法
 
 @interface Person : NSObject @property (nonatomic,strong) id<TicketDelegate> delegate;//这里不要写死了是那个代理类,使用id //买电影票 - (void)buyTicket; @end

 
    4、Person类的实现  

 @implementation Person - (void)buyTicket {     double price = [_delegate ticketPrice];     int number = [_delegate leftTicketsNumber];     NSLog(@"通过代理的帮忙,票价=%f,还剩下%d张票",price,number); } @end


这样就完成了吗,买票的事情。

总结:

简单来说,通过代理来完成某个事。

0 0
原创粉丝点击