GOF--代理模式


前言

代理模式,从这个名字其实就能得出一个内容,肯定不是直接操作某个类,而是通过设置代理人来帮助沟通,或者说做事的。


一、代理设计模式的含义和缺点

代理模式的含义:
  代理模式是指:当某一个类或者对象,不方便直接与外界进行连接,或者说传递数据时,这时候我们就需要设置一个新的类或者对象来作为该类的代理者,代替它完成某些功能,或者说操作。
代理模式的缺点:

  1. 代理模式会造成系统设计中类的数量增加
  2. 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;
  3. 增加了系统的复杂度

注意:可以使用动态代理模式来解决这些问题

二、代理模式的结构

在这里插入图片描述
这时候一般创建的是静态代理类,因为是在用户创建对象时就已经存在了,这样的话就会有缺点,因为有的时候我们根本不清楚,具体是为哪个类在设置代理类,这时候就可以使用动态代理模式,而动态代理模式的本质其实是用反射的机制来完成操作的。

三、动态代理代码实现

动态代理主要分为两大类:基于接口的动态代理,基于类的动态代理

  1. 基于接口—JDK动态代理
  2. 基于类:cglib
  3. java字节码实现:javasist

代理角色代码:

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

//要求该类实现InvocationHandler接口
public class ProxyInvocationHandler implements InvocationHandler {
    //组合要被代理的接口(因为不清楚具体的类,所有用object 来代替类的属性)
    private Object target;
    public void setTarget(Object target){
        this.target=target;
    }
    //生成得到代理类
    public  Object getProxy(){
        return Proxy.newProxyInstance(this.getClass().getClassLoader(),
                target.getClass().getInterfaces(),this);
    }
    //处理代理实例,并返回结果
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        return null;
    }
}

总结

说了一下代理角色的的含义和它类与类之间的组合关系,同时也讲解了代理类的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值