zoukankan      html  css  js  c++  java
  • 委托模式

    //个人理解:委托就是自己不想干的事,来让别人来干。这里名词是委托方和被委托方者,被委托者收到委托来帮委托者来做事(小弟帮大哥大做事

    //我们一般用到委托是在被委托者的.h内声明一个协议和对应的协议方法,那么谁遵循了协议谁就是委托者

    //好处是:回调传值;

    //用到一个例子阐述一下委托的具体含义:租客想让中介帮他找到一处房子

    //在main函数内

    #import <Foundation/Foundation.h>

    #import "Buyer.h"

    int main(int argc, const char * argv[]) {

        @autoreleasepool {

            Buyer *buyer = [[Buyer alloc] init];

            [buyer findMediation];

        }

        return 0;

    }

    //创建一个租客类

    #import <Foundation/Foundation.h>

    #import "Mediation.h"

    @interface Buyer : NSObject<PaymentDelegate>//遵循声明的协议    那么就成为了委托者;

    -(void)findMediation;

    @end

     //租客类的.m文件内

    #import "Buyer.h"

    @implementation Buyer

    -(void)findMediation{

        NSLog(@"我需要房源");

        

        Mediation *m = [[Mediation alloc] init];

        m.delegate = self;//告诉他是遵循了这个协议的对象

        [m handle];

    }

    //协议方法的实现,伴随着回调传值

     -(void)payment:(float)money{

        NSLog(@"付钱:%.2f",money);

    }

    //输出结果为:付钱:10

     @end

    //在被委托者的声明文件(.h)中进行协议的声明

    #import <Foundation/Foundation.h>

    @protocol PaymentDelegate <NSObject>//声明的协议

    -(void)payment:(float)money;//协议方法的声明;

    @end

    @interface Mediation : NSObject

    @property (nonatomic, weak) id<PaymentDelegate> delegate;//遵循协议的对象;

    -(void)handle;

    @end

     //创建一个中介类,也就是被委托者

    //在被委托者的声明文件(.h)中进行协议的声明

    #import <Foundation/Foundation.h>

    @protocol PaymentDelegate <NSObject>//声明一个协议

    -(void)payment:(float)money;//声明的协议的方法;

    @end

    @interface Mediation : NSObject

    @property (nonatomic, weak) id<PaymentDelegate> delegate;//遵循协议的对象;

    -(void)handle;

    @end

     //在中介的.m文件内部

    #import "Mediation.h"

     @implementation Mediation

    -(void)handle{

        NSLog(@"找到房源,请给钱");

        

        [_delegate payment:10.0];//这是谁遵循协议谁就调用协议方法;回调方法传值;

    }

    @end

  • 相关阅读:
    tigerVNC远程桌面,跨内网
    Nutch 二次开发之parse正文内容
    在一个字符串中找到第一个仅仅出现一次的字符。
    图像处理之霍夫变换(直线检測算法)
    EJB3.0开发环境的搭建
    uestc 250 数位dp(水)
    Matlab画图-非常具体,非常全面
    高性能I/O设计模式Reactor和Proactor
    leetcode第一刷_Path Sum II
    PreTranslateMessage作用和用法
  • 原文地址:https://www.cnblogs.com/wpw19920808/p/5022176.html
Copyright © 2011-2022 走看看