专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

设计模式3 代理模式-静态代理

1、什么是代理模式

一个是真正的你要访问的对象(目标类),一个是代理对象,真正对象与代理
  对象实现同一个接口,先访问代理类再访问真正要访问的对象。

代理模式分为静态代理、动态代理。

静态代理是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。

动态代理是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象

简单的说你要租房子,你只要提供你要的需求,比如价格,地段等。然后交有中介帮你找房子(before),然后确定了房子中介再帮你联系房东签订合同(after)。这整过程,你把你租房子的需求交给了中介处理,中介就是你的一个代理。

2、代码

/**
 * 父类,提供一个要被代理的方法
 */
public interface ProxyInterface {

    public void test();
}
/**
 * 被代理类,实现付类的的方法
 */
public class Target  implements  ProxyInterface {
    @Override
    public void test() {
        System.out.println("执行TEST 方法。。。");
    }
}
/**
 * 代理类,也同样实现付类的方法
 */
public class Proxy implements ProxyInterface {

    //这里是装配被代理类的Target
    private ProxyInterface proxyInterface;

    public Proxy(ProxyInterface proxyInterface) {
        this.proxyInterface = proxyInterface;
    }
    //然后对在被代理类Target执行前后设置业务逻辑代码
    @Override
    public void test() {
        System.out.println("执行前 业务逻辑代码");
        proxyInterface.test();
        System.out.println("执行后 业务逻辑代码");

    }

}

main方法

public class ProxyMain {

    public static void main(String[] args) {
        ProxyInterface target = new Target();
        //代理对象 通过构造器注入目标对象
        ProxyInterface proxy = new Proxy(target);
        proxy.test();

    }
}

3、执行结果

75_1.png

4、总结

静态代理就是实现同一个接口的方法,利用一个子Proxy类在另外一个子类Target方法执行前后执行业务逻辑,也就是Spring 的AOP 面向切面编程。

未经允许不得转载:搜云库技术团队 » 设计模式3 代理模式-静态代理

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们