设计模式--代理模式

本文详细介绍了代理模式的概念,特点以及如何在Java中实现。代理对象作为用户和被代理对象之间的中介,提供了额外的控制或处理逻辑。在Android中,getSystemService()返回的即为代理对象,通过Binder实现远程代理。代理模式广泛应用于系统设计中,以增加灵活性和控制权。
摘要由CSDN通过智能技术生成

1.代理模式。

当用户和某个对象打交道,但是程序可能不希望用户之间访问该对象,而是提供一个中间对象来和用户打交道。这个中间对象就被称为代理对象。这种模式被称为代理模式。

代理模式的特点:

代理对象和被代理对象实现相同的接口。

当用户需要访问某个方法时,首先是调用的代理的方法,代理可能要验证某些信息或检查它所代理的对象是否可用。如果可用,代理就会调用被代理对象同样的方法。

2.如何实现?

1)定义一个接口,由代理和被代理对象共同实现。

2)被代理对象,实现接口定义的方法。

3)代理对象,实现接口定义的方法。代理对象要持有被代理对象的引用。

3.代码实现

1)定义共同的接口

/**
 * 定义由代理和被代理所要实现的共同接口
 */
public interface CarInterface {
    public abstract boolean hasCar(String name);
}

2)创建被代理对象

/**
 * 被代理对象,负责正在的业务逻辑处理,幕后大Boss
 */
public class CarFactory implements CarInterface {
    @Override
    public boolean hasCar(String name) {
        //做一些逻辑判断
        return true;
    }
}

3)代理实现

/**
 * 代理对象
 * 1.实现同一个接口
 * 2.持有被代理对象的引用
 */
public class CarProxy implements CarInterface {
    CarFactory factory ;
    CarProxy(){
        factory =  new CarFactory();
    }
    @Override
    public boolean hasCar(String name) {
        //调用被代理对象的方法
        return factory.hasCar(name);
    }
}

4)测试代码

public class ProxyMain {
    public static void main(String args []){
        CarProxy shop = new CarProxy();
        boolean hasCar = shop.hasCar("BYD");
        System.out.println("hasCar "+hasCar);
    }
}

4.拓展。

在Android中我们调用getSystemService(string),拿到的对象,都是代理对象。最终都会通过Binder通信的方法,交给真正的SystemService进行处理,比如ActivityManagerService,WindManagerService等等。其实,这就行运用Binder跨进程通讯实现远程代理。这里不再赘述,后面会专门写文章进行讲解。

5.远程代理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

niuyongzhi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值