首页 > 其他分享 >代理模式(动态)

代理模式(动态)

时间:2023-06-01 16:34:02浏览次数:34  
标签:return int Object 代理 模式 Override 动态 public

1,动态代理
分为2类
① 基于JDK(1.5以后的版本)
接口类:

点击查看代码
public interface IDAO {
    public int save();
    public int remove();
    public int modify();
    public int findAll();
}

实现类
点击查看代码
public class DeptDAO implements IDAO{
    @Override
    public int save() {
        return 1;
    }

    @Override
    public int remove() {
        return 2;
    }

    @Override
    public int modify() {
        return 3;
    }

    @Override
    public int findAll() {
        return 4;
    }
}
动态代理类
点击查看代码
package com.bh.proxy;

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

public class MyProxy implements InvocationHandler {
    //要被代理的类
    private Object delegateEnhanced;

    /*绑定要被代理的类*/
    public Object bind(Object delegate){
        this.delegateEnhanced = delegate;
        Object createdObject = Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
                //要增强被代理类的所有方法的功能
                delegate.getClass().getInterfaces(), this);

        return createdObject;


    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("开始spa==============");
        Object result = method.invoke(this.delegateEnhanced, args);
        System.out.println("结束spa==============");
        return result;
    }
}

测试类
点击查看代码
public class Test {
    public static void main(String[] args) {
      //查看$Proxy0.class的方法
      // System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles","true");
        //原厂产品
        DeptDAO deptDAO = new DeptDAO();
        //代理商
        MyProxy myProxy = new MyProxy();
        //代理商 在原厂产品上增强
        IDAO deptDaoEnhance = (IDAO)myProxy.bind(deptDAO);
        int i = deptDaoEnhance.findAll();//执行时生成了一个$Proxy0.class里面调用代理类的invoke方法
        System.out.println(i);
    }
}

结果
点击查看结果
开始spa==============
结束spa==============
4
② 基于CGLIB的动态代理

标签:return,int,Object,代理,模式,Override,动态,public
From: https://www.cnblogs.com/liangkuan/p/17449439.html

相关文章

  • 单例模式
    所谓的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个获取其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象......
  • 新版idea快捷键总结学习----(用于java开发模式)
    选择代码区ctrlw如果放到以if开头的语句,可以选择if判断条件所在的代码片段游标在单个单词下时选择单词在选中多个单词时,选择整个字符串三次点击时,如果不在字符串单词下,用于选择{}内的代码片段逐级递增如果在单词下方,用于选择单词所在的字符串并且向外逐级扩展。ctrl......
  • 07 Adapter 模式 - Class Adapter
    DesignPattern:Adapter模式-ClassAdapterAdapter模式的另一种作法是ClassAdapter模式,在这个模式下,Adapter直接继承Adaptee(要引进的新类别),以拥有当中的成员及方法,在C++中的话可以这么作: C++中可以多重继承,但在Java中不行,所以在Java中若要采用ClassAdapter,必须作点修改,一方......
  • 最好的代理ip是适合自己业务的代理ip
     不同的业务它对代理ip的要求也是不一样的,有的代理ip套餐可能别人用起来非常合适,但到我们手上就未必适合我们的业务,最好的代理ip是适合自己业务的代理ip。那么这是为什么呢?1、稳定性 如果我们对比过很多代理服务商就会发现,不同的代理ip它们具有不一样的稳定性。像使用在需要......
  • M2M场景之客户端凭证模式|OIDC & OAuth2.0 认证协议最佳实践系列 【4】
    在前两篇文章中,我们介绍了 OIDC 授权码以及授权码增强的PKCE模式,本次我们将重点围绕(ClientCredentials)模式进行讲解,ClientCredentials模式是OIDC授权模式之一,它是一种用于客户端(应用程序)以自己的名义向OIDC服务端获取访问令牌(accesstoken)的认证授权模式,常用于保护A......
  • 关于动态维护树中点集直径的研究
    例题:P2056.这是括号序动态维护的方法,这里不讲。注意到一个结论:设\(S,T(S\capT=\varnothing)\)为两个树种的点集。记\(f(S)\)为一个大小为\(2\)集合,其中两个点分别为\(S\)集合中直径的两个端点(多个取任意)。则有结论:\(\exists\x,y\inf(S)\cupf(T),x\neqy\),满足\(x......
  • Burp Suite添加https证书——让其可以嗅探https的数据包,本质上就是将BP自己做为https
    如何给软件BurpSuite添加https证书?BurpSuite是一款强大的安全测试工具,可以用来设置代理,抓取http数据包,如果添加了https证书,就可以抓取https数据包。这边经验就告诉你,如何给软件BurpSuite添加https证书。工具/原料 联网的电脑一台BurpSuite软件firefox浏览器,并安装proxyswitch......
  • 腾讯用户画像——如何为QQ画像和代理IP画像
    腾讯用户画像画像,实质上就是给账号、设备等打标签。用户画像=打标签我们这里主要从安全的角度动身来打标签,比如IP画像,我们会标注IP是不是代理IP,这些对我们做战略是有辅佐的。以QQ的画像为例,比如,一个QQ只登录IM、不登录其他腾讯的业务、不聊天、频繁的加好友、被好友删除、QQ空间要......
  • python selenium框架解决ip代理框不能自动化登录,解决pyautogui开不了多线程问题
    有时候我们使用python自动化框架的时候,打开一个网页的时候,它会出现出线这一种登录框,我们f12检查不了,用开发者工具强制检查里面没有任何属性.那这时候我们就可以用到python第三方库:pyautoguiPyAutoGUI:是一个Python库,可用于自动化GUI(图形用户界面)程序的任务。它可以让Pytho......
  • golang实现设计模式之构建者模式总结-代码、优缺点、适用场景
    构建者模式也是一种创建型的设计模式,该模式将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的对象。大白话就是,构建者模式,从输出角度看依然是创建个对象实例,但是构建者模式更关注创建的细节,或者说一个对象的创建可以拆分为多个步骤,所有的步骤完成才创建出这个对......