网站首页 > 技术文章 正文
代理模式的核心思想就是一个类想做一个事(函数),但它不去亲自做(实现),委托别的类(代理类)来完成。代理模式Java和oc中都有很广泛的应用,好处颇多,以下是简单的介绍和小例子。
1.可以实现传值,尤其是当一个对象无法直接获取到另一个对象的指针,又希望对那个变量进行一些操作时。(这点在ios里面应用颇多)
2.实现了代码的解耦。可以对外提供接口,具体的工作由不同的客户来决定怎么做。
IOS的代理模式:
分两步:
1.在委托类A声明一个代理和一个协议,协议里有个方法的声明(由代理来实现)。这样这个类就可以在自己内部调用mDelegate.dosomething(param p)来实现要做的东西。
2.设置代理,在代理类里,首先声明自己是A类的代理,即在interface后面加上<代理协议>。然后设置A的代理为自己:mA.mDelegate=self。然后去实现协议方法dosomething(param p)。
代理模式的好处:
Java的代理模式
思路跟IOS的相似,据说代理模式有很多种,这里写了个我理解的代理模式的例子:有三个关键角色:委托类:Request,代理类:Proxy,接口MyInterface
接口:里面有一个方法,处理数据Process
1 public Interface MyInterface{ 2 int Process(int a); 3 4 }
委托类:
1 public class Request{ 2 3 int data=1; 4 Proxy mProxy; 5 6 public Request(Proxy p){ 7 this.mProxy=p; //通过构造函数传入代理p 8 9 } 10 11 public int ProcessData{ 12 return mProxy.Process(data); //在这里调用代理来做Process这个事情 13 } 14 15 public static void Main(string args[]){ 16 //实例化代理类和委托类 17 Proxy mProxy=new Proxy; 18 Request mRequest=new Request(mProxy); 19 //输出协议方法的结果 20 int result=mRequest.ProcessData; 21 System.out.println(result); 22 } 23 24 }
代理类:
1 public Class Proxy implements MyInterface{ 2 .... 3 public int Process(int a){ 4 return 10*a; //实现协议方法 5 } 6 }
这样Proxy就替Request完成了ProcessData的任务,这里面代理类相当于客户,不同的客户可以有不同的处理a的方法。这里的代理是对a乘以了10.
这里Process就是服务端给客户端提供的接口,即把数据a暴露出来,由客户来决定怎么对a进行处理。
最后打印的结果为10
- 上一篇: 真题详解(UML图)-软件设计(五十五)
- 下一篇: Object-C 银行卡,信用卡校验规则
猜你喜欢
- 2025-07-06 C/C++编程笔记:C++中的运算符重载
- 2025-07-06 Qt - QObject事件
- 2025-07-06 Python ‘bufferobject.c’整数溢出漏洞
- 2025-07-06 Object-C 银行卡,信用卡校验规则
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- javascript权威指南 (19)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- http error 503 (21)
- android退出应用 (21)
- 图片透明度 (20)
- c 数组 (33)
- pascal语言教程 (23)
- java 下载 (20)
- ppt 教程 (35)
- java7 (24)
- 存储区域网络 (19)