[oc学习日记]代理模式

何为代理模式,代理模式也成委托模式

代理模式顾名思义,就是一个人让另一个个人帮助他做某事

我们下面就用一个代购的故事为大家讲解代理模式

1.首先我们要创建一个协议,该协议具有具体功能(代购的功能)

1 #import <Foundation/Foundation.h>
2 //声明协议
3 @protocol delegate <NSObject>
4 //协议中代购的方法
5 -(void)buy;
6 @end

2.谁可以实现这个功能,就让这个类去遵循这个协议(在这个例子中,代购者可以实现代购功能所以在代购的头文件中遵循这个协议)

1 #import <Foundation/Foundation.h>
2 #import "delegate.h"
3 #import "WantBuy.h"
4 //遵循协议
5 @interface HelpBuy : NSObject<delegate>
6 //接受请求的方法
7 -(void)reservebuy;
8 @end

并且实现协议中的方法

 1 #import "HelpBuy.h"
 2
 3 @implementation HelpBuy
 4 //代购者能够实现代购功能
 5 -(void)buy
 6 {
 7     NSLog(@"我是代购我能买");
 8 }
 9 //代购者接收到想购买者的请求
10 -(void)reservebuy
11 {
12     WantBuy *wanter = [[WantBuy alloc]init];
13     wanter.mydel = self;
14     //想购买者发出请求
15     [wanter dementbuy];
16 }
17 @end

3.睡需要使用该功能(谁有这个需求,在本例中想要购买者需要代购者趣帮助他购买商品,因而他要定义一个协议属性指向代购者)

1 #import <Foundation/Foundation.h>
2 #import "delegate.h"
3 @interface WantBuy : NSObject
4 //想购买者要定义一个协议属性
5 @property (nonatomic,assign)id<delegate> mydel;
6 -(void)dementbuy;
7 @end

想要购买者发出想要购买的请求给代购者,并且实现

 1 #import "WantBuy.h"
 2
 3 @implementation WantBuy
 4 -(void)dementbuy
 5 {
 6     NSLog(@"我想买你帮我买");
 7     //发出购买请求
 8     [_mydel buy];
 9 }
10 @end

总的来说:代理模式大致可以分为两种实现方式

1.谁 让 谁 干什么

2.谁 让 我 干什么

时间: 2024-10-11 11:58:20

[oc学习日记]代理模式的相关文章

OC中的代理模式

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

设计模式学习之代理模式(Proxy)

一.代理模式的初衷 不想让客户端直接访问具体实现接口,客户端不应该直接访问具体实现,一般会涉及到以下四个对象 业务接口:定义客户端访问的接口,是实现类和代理类都需要实现的 实现类:实现了业务接口,真正的实现是在这里 代理类:同样实现了业务接口,一般都会关联一个实现类的实例,由它来调用实现类 客户端:顾名思义,使用者,与代理类打交道,甚至都不知道具体实现类的存在. 二.代理模式设计图 三.代理模式的简单实现代码 BizInterface.java package com.lipan.designp

设计模式学习--------12.代理模式学习

场景: 福尔摩斯一直想送礼物给花生,但是羞于直接赠送,于是想到让房东太太去帮忙送礼物.编程如何实现呢? 定义: 为其他对象提供一种代理以控制对这个对象的访问. 角色: Proxy:代理对象.有下列功能: 实现与具体的目标对象一样的接口,这样就可以使用代理来代替具体的目标对象. 持有一个具体目标对象的引用,可以在需要时调用具体的目标对象. 可以控制对目标对象的访问,并可以负责创建和删除它. package com.kris.study; public class Proxy implements

设计模式学习之代理模式学习(一)

关于设计模式想必学习过Java语言的人都知道吧,当时对其进行深入学习的的人应该不是很多.在我看来设计方面的知识相比于框架应用配置等知识要有意思的多,并且设计模式的对一个程序员的编程思想提升有着很大的帮助.但是设计模式有二十三种,想要全部掌握还是要花点时间的,但如果是只学习常用的几种设计模式还是相对容易的.下面是我学习代理模式的一些心得. 问题引出      什么是代理模式,为什么要用代理模式. 现在有一个场景模拟:有一个tank类,他实现了Moveable接口,Moveable接口中有一个mov

学习设计模式 - 代理模式

学习设计模式 - 代理模式 一丶定义 代理模式为另一个对象提供替身或者占位符以控制对这个对象访问, 被代理的对象可以是远程的对象.创建开销大的对象.需要安全控制的对象 二丶理解 2.1) 当一个对象除了处理真正的业务逻辑之外, 还需要增加额外的处理,如事务,打印日志等等, 如果将这些额外逻辑放到原对象中,会造成职责不清晰.        这时可以使用代理对象代理该对象, 代理对象实现额外逻辑, 真正的业务逻辑则委托给被代理对象处理.这样可以使得职责清晰. 2.2) 为另一个对象提供一个替身或占位

设计模式学习之--代理模式

代理模式,顾名思义,意思和我们日常生活中的代理差不多,举一个最简单的例子,我们知道,我们的火车站购票有很多的火车票代售点,这个火车票代售点可以代替我们的火车站的售票处让我们买票,当然,代售点相比于火车站售票点又可以提供电话订票和提前预定,这样,火车票代售点就基本可以实现火车站售票点的基本功能,同时还可以提供相对于火车站售票点其他的功能.那么,我们的设计模式中的代理模式就是这个意思. 在我们的程序中,许多类的方法中我们总需要一些额外的共同的功能,比如日志和性能优化操作,如果在所有 这些类中都加入这

javascript设计模式学习之六——代理模式

一.代理模式定义 代理模式的关键是:当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问.代理模式需要和本体对外提供相同的接口,对用户来说是透明的.代理模式的种类有很多,诸如防火墙代理,保护代理(帮助过滤掉一些请求,控制不同权限的对象对目标对象的访问),虚拟代理(将一些开销很大的对象,延迟到真正需要的时候才创建),缓存代理等.在javascript中使用较多的是虚拟代理. 二.虚拟代理实现图片预加载 在这个例子中,不使用虚拟代理固然也能够解决问题,不过采用虚拟

设计模式学习之代理模式

代理模式,可以分为两种,一种是静态代理,一种是动态代理. 两种代理从虚拟机加载类的角度来讲,本质上都是一样的,都是在原有类的行为基础上,加入一些多出的行为,甚至完全替换原有的行为.在我们平时写代码的过程中,代理模式可以说是随处可见,所以,本篇博客就将给大家介绍代理模式. 基本概念 代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口. UML图 Subject:抽

黑马程序员-OC学习日记-对象与方法、对象与函数

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.NSString类简介 1.NSString是OC中用来表示字符串的一个类 2.NSString类创建 (1)通过字面量方式创建 NSString * str = @"要努力学习!"; (2)通过对象方法创建 NSString * str1 = [NSString alloc]; str1 = [str1 initWithUTF8String:"今天雾霾好大!"