Objective C 代理模式
来源:互联网 发布:网络面板cad表示 编辑:程序博客网 时间:2024/05/21 17:14
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。
那么,代理模式一般都在什么情况下使用呢?大体可以分为以下四种:
远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
安全代理,用来控制真实对象访问时的权限。
智能指针,是指当调用真实的对象时,代理处理另外一些事。
其实看起来用途还是蛮多的,不过说实话,基本的结构并不复杂哦!我是说最最基本的结构看起来并不复杂哦,下面可以看一下类的结构图:
下面简单介绍一下图中提到的几个类型,Client不用多说,顾名思义就是所提供服务的目标对象,Subject类型是RealSubject和Proxy的公共接口,同理也就是说,Proxy类型和RealSubject类型都继承自Subject类型,通过Proxy类型来引用RealSubject类型,以达到隐藏RealSubject类型的目的,从而实现对RealSubject类型的代理功能。
下面还是按老套路,把用Objective C实现的简单代码给大家做一个展示。
=============================================
Subject类接口
1
2
3
4
5
#import <Foundation/Foundation.h>
@interface
Subject:
NSObject
-(
void
)Request;
@end
Subject类实现
1
2
3
4
5
6
7
#import "Subject.h"
@implementation
Subject
-(
void
)Request{
return
;
}
@end
RealSubject类接口
1
2
3
4
#import "Subject.h"
@interface
RealSubject :Subject
@end
RealSubject类实现
1
2
3
4
5
6
7
8
#import "RealSubject.h"
@implementation
RealSubject
-(
void
)Request{
NSLog
(@
"我是Request,真实的请求"
);
return
;
}
@end
Proxy类接口
1
2
3
4
5
6
7
#import "Subject.h"
#import "RealSubject.h"
@interface
Proxy:Subject{
@private
RealSubject *realSubject;
}
@end
Proxy类实现
1
2
3
4
5
6
7
8
9
10
#import "Proxy.h"
@implementation
Proxy
-(
void
)Request{
if
(realSubject==
nil
)
realSubject= [[RealSubject alloc]init];
[realSubject Request];
return
;
}
@end
Client端(Main()方法调用)
1
2
3
4
5
6
7
8
9
10
11
#import <Foundation/Foundation.h>
#import "Proxy.h"
int
main (
int
argc,
const
char
*argv[])
{
@autoreleasepool
{
Proxy *proxy = [[Proxy alloc]init];
[proxy Request];
}
return
0;
}
- Objective C--代理模式
- Objective C 代理模式
- Objective-c 代理模式
- objective-c代理模式图解(一目了然)
- Objective-c 代理模式(delegate)
- Objective-c 代理模式(delegate)
- Objective-c 代理模式(delegate)
- 详述 IOS 之代理模式(Objective-c)
- Objective-c 代理模式(dele…
- Objective-C语言——委托模式(代理模式)
- Objective-C中的协议和代理(委托)设计模式
- 【Objective-C】OC中代理(委托)设计模式
- 黑马程序员------[Objective-C]协议-代理设计模式
- iOS学习(二十八)Objective-C 代理设计模式
- Objective-C 代理的例子
- Objective-C协议与代理
- Objective-C:类别&代理
- Objective-C 委托模式
- Ajax安装方法
- xmlHttp传输url中文乱码问题
- TCP/IP详解学习笔记(12)-TCP的超时与重传
- sys_reboot()&acpi_enter_sleep_state()
- 【转】怎样判断线段相交(转载)
- Objective C 代理模式
- 一般函数指针和类的成员函数指针 (this指针)
- TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器
- 搜索比赛A题
- 网上发现的一个 《Flash&flex大全》
- apn管理
- 抽象类和接口的区别,使用场景
- Android源码编译
- 在程序中删除视图