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

  • 相关阅读:
    Python核心技术与实战——十四|Python中装饰器的使用
    Python核心技术与实战——十三|Python中参数传递机制
    GUI学习之三十四——QSS样式表
    数据分析思维(一):数据分析的三种核心思维
    python设计模式
    Docker架构
    云技术
    5G[generation]的知识收集
    计算机网络知识汇总---20191207
    odoo里面的read_group写法
  • 原文地址:https://www.cnblogs.com/huoran1120/p/5076312.html
Copyright © 2011-2022 走看看