设计模式 代理模式(Proxy)

代理模式

顾名思义,就是调用者不直接持有目标对象的引用,而是通过实例化一个中介对象,通过中介对象完成对目标对象的操作。
它的一个主要作用在于执行目标对象的方法之前和之后可以执行一些其他的操作,同时不会直接持有目标对象的引用。
在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();
    }
}

打印结果为:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值