详解Java中的静态代理模式

 更新时间:2022年12月26日 15:33:32   作者:从未止步..  
这篇文章主要为大家介绍了Java中的静态代理模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

静态代理模式

代理模式

代理人可以替受代理的人完成一些工作,比如:学校与学生之间的关系来说,学生就好比被被代理类,学生只需要负责上课,写作业,考试等事务,而类似于课程,考试,任课教师的安排等都不需要学生去做,可以交给其学校完成。

静态代理模式的实现要求

提供两个真实的具体的类,代理类与被代理类;

两个类同时实现同一个接口,接口中定义多个抽象方法(提取代理类,被代理各自的行为任务)

代理类一定要有被代理对象的引用,为了能在代理类中调用被代理类的重写接口中的方法

举例

接口-----包含代理人和被代理人需要进行的事务:

package static_assist;

public interface affair {
    //考试
    void testing();
    //考试安排
    void test_schedule();
    //上课
    void classing();
    //课程安排
    void classing_schedule();
    //任课教师安排
    void progamm_teacher();
}

代理人------学校:实现affair接口,并且重写自己能够完成的事务的方法,并产生被代理对象的引用,以便于调用被代理类中重写的方法:

代理人不能完成的事务,需要使用被代理人的引用去调用该事务的方法

package static_assist;

public class school implements affair {
    private student student;//被代理类的引用

    public school(student student) {
        this.student=student;
    }

    public school() {
    }

    @Override
    public void testing() {
        student.testing();
    }

    @Override
    public void test_schedule() {
        System.out.println("学校进行考试安排");
    }

    @Override
    public void classing() {
        student.classing();
    }

    @Override
    public void classing_schedule() {
        System.out.println("学校进行上课安排");
    }

    @Override
    public void progamm_teacher() {
        System.out.println("学校进行任课教师安排");
    }
}

被代理人----学生:实现affair接口,并且只需要重写自己能够完成的事务的方法即可

package static_assist;

public class student implements affair {
    @Override
    public void testing() {
        System.out.println("学生进行考试");
    }
    @Override
    public void test_schedule() {

    }

    @Override
    public void classing() {
        System.out.println("学生去上课");
    }

    @Override
    public void classing_schedule() {

    }

    @Override
    public void progamm_teacher() {

    }
}

测试类:

package static_assist;

public class Test {
    public static void main(String[] args) {
        school school=new school(new student());//产生代理类和被代理类的实例化对象,将被代理类的实例化对象传递到代理类

//通过代理类实例化对象调用各个事务方法
        school.classing_schedule();
        school.progamm_teacher();
        school.classing();
        school.test_schedule();
        school.testing();
    }
}

输出:

学校进行上课安排
学校进行任课教师安排
学生去上课
学校进行考试安排
学生进行考试

到此这篇关于详解Java中的静态代理模式的文章就介绍到这了,更多相关Java静态代理模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Feign如何解决服务之间调用传递token

    Feign如何解决服务之间调用传递token

    这篇文章主要介绍了Feign如何解决服务之间调用传递token,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java实现登录验证码

    java实现登录验证码

    这篇文章主要为大家详细介绍了java实现登录验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • SpringBoot如何根据目录结构生成API接口前缀

    SpringBoot如何根据目录结构生成API接口前缀

    这篇文章主要介绍了SpringBoot如何根据目录结构生成API接口前缀,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • SpringBoot中MockMVC单元测试的实现

    SpringBoot中MockMVC单元测试的实现

    Mock是一种用于模拟和替换类的对象的方法,以便在单元测试中独立于外部资源进行测试,本文主要介绍了SpringBoot中MockMVC单元测试的实现,具有应该的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 高内聚低耦合原则_动力节点Java学院整理

    高内聚低耦合原则_动力节点Java学院整理

    耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准
    2017-08-08
  • MyBatis Plus整合Redis实现分布式二级缓存的问题

    MyBatis Plus整合Redis实现分布式二级缓存的问题

    Mybatis内置的二级缓存在分布式环境下存在分布式问题,无法使用,但是我们可以整合Redis来实现分布式的二级缓存,这篇文章给大家介绍MyBatis Plus整合Redis实现分布式二级缓存,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • 将springboot项目生成可依赖的jar并引入到项目中的方法

    将springboot项目生成可依赖的jar并引入到项目中的方法

    SpringBoot项目默认打包的是可运行jar包,也可以打包成不可运行的jar包,本文给大家介绍将springboot项目生成可依赖的jar并引入到项目中的方法,感兴趣的朋友一起看看吧
    2023-11-11
  • RocketMQ消息过滤与查询的实现

    RocketMQ消息过滤与查询的实现

    这篇文章主要介绍了RocketMQ消息过滤与查询的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java Filter过滤器的使用教程

    Java Filter过滤器的使用教程

    Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能
    2023-01-01
  • Springboot AOP对指定敏感字段数据加密存储的实现

    Springboot AOP对指定敏感字段数据加密存储的实现

    本篇文章主要介绍了利用Springboot+AOP对指定的敏感数据进行加密存储以及对数据中加密的数据的解密的方法,代码详细,具有一定的价值,感兴趣的小伙伴可以了解一下
    2021-11-11

最新评论