zoukankan      html  css  js  c++  java
  • 代理模式

    所有的设计模式都有一个固定的规范

    功能类:

      1. 写一套代理(协议)

        代理方法就是回调的方式

          @protocol agentDelegate <NSObject>

        @optional

        //我希望通过这里的方法回调数据

        //使用我这个类来对文本进行配置,用户配置完毕,我通过这个方法将用户配置

        //的数据回调给调用者

        -(void)call:(NSString*)message;

        @end

      2. 声明一个变量记录调用者

        @property(nonatomic,assign)id <agentDelegate> delegate;

      3. 判断调用者是否实现了相应的回调方法(代理方法)

         if ([self.delegate respondsToSelector:@selector(call:)]){

                [self.delegate call:@"租到房子了"];

           } 

    使用者:

      1.  服从代理

        @interface Person : NSObject <agentDelegate> 

      2. 设置功能类里面的delegate变量

        告诉功能类,你的回调方法在哪里实现的(谁来接受你的毁掉数据)

        //配置调用者为我当前的这个对象

           ag.delegate = self;

      3. 实现相应的代理方法

        谁接收 谁就实现

        -(void)call:(NSString *)message{

            NSLog(@"%@",message);

        } 

    *如果是第三者代理模式,谁接收谁实现

     

    栗子栗子栗子:

    Person.h

    #import <Foundation/Foundation.h>

    #import "Agent.h"

    @interface Person : NSObject <agentDelegate> 

    -(void)needHouse;

    -(void)call:(NSString *)message;

    @end

    Person.m 

    #import "Person.h"

    #import "Agent.h" 

    @implementation Person

    -(void)needHouse{

        Agent * ag = [[Agent alloc]init];

        ag.delegate = self;

        [ag rentHouse];   

    }

    -(void)call:(NSString *)message{

        NSLog(@"%@",message);

    } 

    @end

    Agent.h

    @protocol agentDelegate <NSObject>

    @optional

    -(void)call:(NSString*)message;

    @end

     

    @interface Agent : NSObject

    @property(nonatomic,assign)id <agentDelegate> delegate;

    -(void)rentHouse;

    @end

    Agent.m 

    @implementation Agent

    -(void)rentHouse{

        NSLog(@"正在租房子");

        if ([self.delegate respondsToSelector:@selector(call:)]){

            [self.delegate call:@"租到房子了"];

        } 

    }

    @end

  • 相关阅读:
    CSS基础学习记录——CSS选择器及其特殊性计算
    CSS基础学习记录——CSS中哪些属性可以继承?
    行内框和行框的概念,line-height和vertical-align的关系理解
    【转】DOM中NodeList、HTMLCollection、NamedNodeMap三个动态集合的理解
    property参数讲解
    CocoaPods安装方法
    ios UITextField 以及键盘显示总结
    Xcode11 在Xib中进行UIScrollView布局
    锁问题总结-同一个线程两次获取同一把锁
    【转载】ARM MMU详解
  • 原文地址:https://www.cnblogs.com/huoran1120/p/5076312.html
Copyright © 2011-2022 走看看