设计模式 代理模式(Proxy)
来源:互联网 发布:火星15洲际导弹 知乎 编辑:程序博客网 时间:2024/06/05 15:29
代理模式
顾名思义,就是调用者不直接持有目标对象的引用,而是通过实例化一个中介对象,通过中介对象完成对目标对象的操作。
它的一个主要作用在于执行目标对象的方法之前和之后可以执行一些其他的操作,同时不会直接持有目标对象的引用。
在activity的启动过程中,ActivityManagerService就有个代理对象ActivityManagerProxy,它位于应用所在进程中,应用进程通过它来调用ActivityManagerService提供的功能,这个代理对象不是应用进程直接创建的,而是通过调用ActiviyManagerNative类的工具方法getDefault方法得到的,所以在应用进程里通常这样启动Activty:ActivityManagerNative.getDefault().startActivity(),好了扯远了,只是想举个实际应用的例子,这部分还是单开一篇文章来整理吧,关于Activity的启动流程还是值得细细咀嚼一下的,本篇文章以一个简单的例子来说明代理模式的原理:
先看下实现代理模式组成:
1.抽象目标对象
2.目标对象
3.代理对象
直接看代码吧:
抽象目标对象:
public abstract class AbstractObject { //操作 public abstract void operation();}
目标对象
public class TargetObject extends AbstractObject { @Override public void operation() { //一些操作 Log.d("Proxy","目标对象的一些操作"); }}
代理对象
public class ProxyObject extends AbstractObject { TargetObject realObject = new TargetObject(); @Override public void operation() { //调用目标对象之前可以做相关操作 Log.d("Proxy","调用目标对象之前的操作"); realObject.operation(); //调用目标对象之后可以做相关操作 Log.d("Proxy","调用目标对象之前的操作"); }}
开始调用:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AbstractObject obj = new ProxyObject(); obj.operation(); }}
打印结果为:
0 0
- 【设计模式】--代理模式 (Proxy模式)
- 代理设计模式(proxy)
- Proxy代理设计模式
- 设计模式 - 代理(Proxy)
- 代理设计模式--Proxy
- Proxy(代理)设计模式
- 代理 proxy 设计模式
- 设计模式之代理模式(Proxy)
- 设计模式之代理模式(Proxy)
- 设计模式--代理模式(Proxy)
- 设计模式--代理模式(Proxy)
- 设计模式-代理模式(Proxy Pattern)
- 设计模式之Proxy(代理模式)
- 设计模式---代理模式(Proxy)
- 设计模式 (九)代理模式(Proxy)
- 设计模式 (九)代理模式(Proxy)
- 设计模式 (九)代理模式(Proxy)
- 【设计模式】之代理模式(Proxy)
- interfaces
- JAVA中的堆内存和栈内存
- Objective-C如何自己实现一个基于数组下标的属性访问模式
- 数据类型
- Unity.VR.04MainMenu场景的交互
- 设计模式 代理模式(Proxy)
- 关于对瀑布流布局的思考
- C/C++ 判断文件夹是否存在以及创建、删除文件夹 windows以及linux通用
- Spring
- PL/SQL Developer(解压版)连接64位的Oracle11g
- leetcode上的回溯法总结
- C#实现冒泡排序之对泛型排序
- Java学习笔记_08
- Linux