今天,想和大家分享一下代理模式。首先呢,我想先用一句话概括一下代理模式。
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。
那么,代理模式一般都在什么情况下使用呢?大体可以分为以下四种:
- 远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
- 虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
- 安全代理,用来控制真实对象访问时的权限。
- 智能指针,是指当调用真实的对象时,代理处理另外一些事。
其实看起来用途还是蛮多的,不过说实话,基本的结构并不复杂哦!我是说最最基本的结构看起来并不复杂哦,下面可以看一下类的结构图:
下面简单介绍一下图中提到的几个类型,Client不用多说,顾名思义就是所提供服务的目标对象,Subject类型是RealSubject和Proxy的公共接口,同理也就是说,Proxy类型和RealSubject类型都继承自Subject类型,通过Proxy类型来引用RealSubject类型,以达到隐藏RealSubject类型的目的,从而实现对RealSubject类型的代理功能。
下面还是按老套路,把用Objective C实现的简单代码给大家做一个展示。
=============================================
- Subject类接口
1 2 3 4 5 | |
- Subject类实现
1 2 3 4 5 6 7 | |
- RealSubject类接口
1 2 3 4 | |
- RealSubject类实现
1 2 3 4 5 6 7 8 | |
- Proxy类接口
1 2 3 4 5 6 7 | |
- Proxy类实现
1 2 3 4 5 6 7 8 9 10 | |
- Client端(Main()方法调用)
1 2 3 4 5 6 7 8 9 10 11 | |
好啦,完工!简单吧!呵呵!一共也没几行代码哦,关键是思想、思路。这才是精髓啊,关键不在模式本身的套路,关键是实现上的方法思路,这才是重点啊。关于这一点还是需要细细揣摩的啊!