介绍 - OC中的代理模式

一,代理设计模式的场合:

当对象A发生了一些行为,想告知对象B (让对象B成为对象A的代理对象)

对象B想监听对象A的一些行为 (让对象B成为对象A的代理对象)

当对象A无法处理某些行为的时候,想让对象B帮忙处理 (让对象B成为对象

A的代理对象)

二,对象之间的传值

使用代理的步骤:  首先要明确谁请别人代理, 谁当别人的代理

请代理三部曲:

1> 写一个协议, 把自己不方便(或者自己不想)做的事情列出来(@protocol StudentDelegate <NSObject>)

2> 包含进来一个遵守协议的对象, 对象可以是任意类型(id<StudentDelegate> delegate;)

3> 当自己发生一些事情想通知代理去做, 就是调用代理对应的方法

([self.delegate studentDidReceiveDelivery:self];)

当别人的代理三部曲:

1> 遵守协议(@interface Teacher : NSObject<StudentDelegate>)

2> 实现协议里面对应的方法

3> 设置代理的对象, 给代理对象赋值. 建立起来两者的代理关系

使用代理的注意点:

1> 协议的命名规则 类名+Delegate

2> 一般协议里面的方法都写成 @optional

3> 协议里面方法的命名: 小写类名开头+ 描述这个方法在什么时间或者发生什么事情调用, 第一个参数一般是类自身的对象

4> 调用代理的方法之前,首先判断代理有没有实现对应的放, 如果实现了才去调用([self.delegate respondsToSelector:@selector(studentDidReceiveDelivery:)])

代理设计模式的核心作用就是为了解耦. 解除对象之间的紧耦合性.

时间: 2024-10-27 14:02:18

介绍 - OC中的代理模式的相关文章

OC中的代理模式

OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的.这里举一个简单的例子:小孩类,护士类,保姆类,其中小孩类有两个方法:wash和play这里代理对象就是:护士类.保姆类,小孩类是被代理对象.看一下代码:首先看一下小孩类:Children.h[objc]  view plaincopy 1. //   2. //  Children.h   3. //  12_DesignStyle   4. //   5. //

Objective-C中的委托(代理)模式

我个人更喜欢把委托(Delegate)模式称为代理(Proxy)模式.还是那句话,第一次接触代理模式是在Java中接触的,在Java中实现代理模式和接口是少不了的.当时学习Spring的时候用到了接口回调,其实就是实现的委托代理模式.简单的说代理就是把相应的功能交给实现接口的相应的类中来解决.在OC中没有接口该如何实现代理呢?前面的博客中笔者说提了一句,在OC中的协议和Java中的接口极为相似,都是只声明方法而不去实现,方法的实现在OC中交个遵循协议的类,而在Java中方法的实现交给实现接口的类

ES6中的代理模式-----Proxy

什么是代理模式 代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式. 所谓的代理者是指一个类别可以作为其它东西的接口.代理者可以作任何东西的接口:网络连接.内存中的大对象.文件或其它昂贵或无法复制的资源. 著名的代理模式例子为引用计数(英语:reference counting)指针对象. 当一个复杂对象的多份副本须存在时,代理模式可以结合享元模式以减少内存用量.典型作法是创建一个复杂对象及多个代理者,每个代理者会引用到原本的复杂对象.而作用在代理者的运算会转送到原本对象.一

软件开发常用设计模式—iOS 中的代理模式总结

比如现在有一个人,想要买一张电影票,但是她很忙碌,没时间去买,那怎么办呢?只能说委托给另一个人去买. 此时,需要 person 给 other 发送消息,通知 other 去给她买电影票,而 other 也要反馈消息给 person,此时 other 就是一个代理人,person 委托代理人去办事情(买票).代理人是给委托人代办一些事情的人.具体代理人怎么做的这些事情,委托人不管,委托人只看反馈. 先看代理设计模式的基本原理 #import <Foundation/Foundation.h>

Java中的代理模式

1.什么是代理模式 代理模式:就是为其他对象提供一种代理以控制对这个对象的访问. 代理可以在不改动目标对象的基础上,增加其他额外的功能(扩展功能). 举个例子来说明代理的作用: 一般我们想邀请明星来当我们的代言人,我们并不能直接联系到明星,而是通过其经纪人,来告诉经纪人我们需要和明星进行合作,然后通过经纪人来转达给明星.,明星只需要做好代言工作就好,其他繁琐的事情就交于经纪人就可以.这里的经经纪人就是一个代理对象,明星就是一个目标对象. 用图表示如下: 2.三种代理模式  2.1 静态代理 静态

理解Android系统的进程间通信原理(一)----RPC中的代理模式

Android系统中的进程间通信是通过一个轻量级的RPC(Remote Procedure Call远程进程调用)和AIDL(Android Interface Definination Language)规范来生成两个进程之间可以相互访问的代码.其中RPC是以接口方式来实现,客户端与被调用实现之间是通过代理模式来实现的,这些又是以JAVA的RMI和代理模式为理论基础的,若要灵活掌握这个轻量级的解决方案,有必要重新理顺这些基础知识的,这里我们先了解代理模式的相关基础, 有关代理模式的知识,可以用

[oc学习日记]代理模式

何为代理模式,代理模式也成委托模式 代理模式顾名思义,就是一个人让另一个个人帮助他做某事 我们下面就用一个代购的故事为大家讲解代理模式 1.首先我们要创建一个协议,该协议具有具体功能(代购的功能) 1 #import <Foundation/Foundation.h> 2 //声明协议 3 @protocol delegate <NSObject> 4 //协议中代购的方法 5 -(void)buy; 6 @end 2.谁可以实现这个功能,就让这个类去遵循这个协议(在这个例子中,代

DRP总结—在实践中理解代理模式

前言 在JDBC访问数据库时,增删改的方法可谓都要进行手动事务处理,所以在每一个方法执行的时候,就都要写事务处理的代码.当敲起代码来不舒服的时候,我们就要想想面向对象的思想,这么多次重复写相同的代码是不对的,所以就要进行抽象和封装,于是就有了设计模式. 代理模式 代理模式(Proxy):为其他对象提供一种代理,以控制对这个对象的访问.举一个生活中的例子,如果我们买什么东西,我们并不会去工厂直接购买,而是去商场进行选购,这时的商场也就是工厂的代理类.在类的单一职责原则中,一个类应该只做一件事,所以

iOS语言中的代理模式

什么是代理,为什么需要代理? 当某一个类或者试图控制器需要完成某些“动作”,但是却需要另一个类或者视图控制器作为其动作的载体. 实际应用中的单例 比如当左侧滑栏leftViewController上有用户登录后显示的头像,点击头像会进入用户设置页面.而用户设置页面实际是需要从rootViewController push进入的.所以当用户点击左侧滑栏leftViewController上的用户头像时,需要左侧滑栏的代理rootViewController去执行创建用户设置页面并弹入的这一系列操作