详解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静态代理模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java提供的4种函数式接口

    java提供的4种函数式接口

    这篇文章主要介绍了java提供的4种函数式接口,函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型并有且只有一个抽象方法的接口,下文详细内容,需要的小伙伴可以参考一下
    2022-03-03
  • java使用Hex编码解码实现Aes加密解密功能示例

    java使用Hex编码解码实现Aes加密解密功能示例

    这篇文章主要介绍了java使用Hex编码解码实现Aes加密解密功能,结合完整实例形式分析了Aes加密解密功能的定义与使用方法,需要的朋友可以参考下
    2017-01-01
  • JAVA中DIFF算法实现

    JAVA中DIFF算法实现

    本文主要介绍了JAVA中DIFF算法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java重写与重载之间的区别

    Java重写与重载之间的区别

    本文主要介绍了Java重写与重载之间的区别。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Java中UUID生成原理及优缺点

    Java中UUID生成原理及优缺点

    本文将详细讲解UUID的生成原理、特性、实用场景以及优缺点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • SpringBoot登录、退出、获取用户信息的session处理方案

    SpringBoot登录、退出、获取用户信息的session处理方案

    这篇文章主要介绍了SpringBoot登录、退出、获取用户信息的session处理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • SpringBoot中使用Servlet三大组件的方法(Servlet、Filter、Listener)

    SpringBoot中使用Servlet三大组件的方法(Servlet、Filter、Listener)

    这篇文章主要介绍了SpringBoot中使用Servlet三大组件的方法(Servlet、Filter、Listener),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • SpringBoot外部化配置使用Plus版的方法示例

    SpringBoot外部化配置使用Plus版的方法示例

    这篇文章主要介绍了SpringBoot外部化配置使用Plus版的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Spring Boot 定义系统启动任务的多种方式

    Spring Boot 定义系统启动任务的多种方式

    这篇文章主要介绍了Spring Boot 定义系统启动任务的多种方式,看看你都会哪几种 ,感兴趣的朋友跟随小编一起看看吧
    2019-04-04
  • 从零开始在Centos7上部署SpringBoot项目

    从零开始在Centos7上部署SpringBoot项目

    本文主要介绍了从零开始在Centos7上部署SpringBoot项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论