android常用设计模式之代理模式

一.定义

代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

 

二.角色

1.抽象角色(Subject) :通过接口或者抽象类声明真实角色实现的业务方法。

2.代理角色(Proxy):实现抽象角色,是真实角色的代理。

3.真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。

 

三.使用场景

1.一个对象不能直接访问另一个对象,使用代理做为中介来简洁访问。

2.被访问的对象不像暴露内容时,可以通过代理来隐藏内容。

 

四.模式分类

代理模式分为动态代理和静态代理

1.动态代理:是在程序运行期间根据反射等机制动态的生成,所以不存在代理类的字节码文件。

2.静态代理:就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。

 

五.使用案例分析

生活中最常见的代理方式,就是现在很流行的代购,这里我们通过代购奶粉的案例结合代码来分析下代理模式:

案例需求:我需要买一款国外的奶粉,不放心在国内直接买,刚好有朋友在国外,于是想通过朋友代购这款奶粉。

1.抽象角色-实现抽象购买行为:

/**
 *  代理模式-抽象角色
 */
public interface IPeople {
    void shop();
}


2.真实角色,实现具体的行为


 

public class My implements IPeople {
    @Override
    public void shop() {
        System.out.print("我想代购在国外买一款奶粉");
    }
}


 

3.代理角色,代理购买奶粉的行为


public class ProxyShop implements IPeople{
    IPeople mIpeople;
    public ProxyShop(IPeople iPeople){
        mIpeople = iPeople;
    }

    @Override
    public void shop() {
        System.out.print("我是代购");
            mIpeople.shop();
    }
}

以上例子简单实现了代理模式的三个角色的应用。

 

五.代理模式在Android中的应用:

 在Android中 activity的管理类ActivityManagerProxy就是使用代理模式。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值