Java中的静态代理模式详解

Crq
Crq
管理员
1710
文章
0
粉丝
Linux教程评论14字数 669阅读2分13秒阅读模式
摘要这篇文章主要为大家介绍了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中的静态代理模式的文章就介绍到这了

weinxin
我的微信
微信号已复制
我的微信
这是我的微信扫一扫
 
Crq
  • 本文由 Crq 发表于2025年2月19日 21:25:56
  • 转载请注明:https://www.cncrq.com/13126.html
python中使用zip函数的七重境界 Linux教程

python中使用zip函数的七重境界

Python中有一些内置函数,可以使我们的代码非常优雅。​​zip​​ 函数就是其中之一,但是zip 函数的使用对于初学者来说不是很直观,有时容易出错。因此本文将从7个层次来由浅入...
Ubuntu上Grafana 监控 Docker的技巧 Linux教程

Ubuntu上Grafana 监控 Docker的技巧

Grafana 是一个有着丰富指标的开源控制面板。在可视化大规模测量数据的时候是非常有用的。根据不同的指标数据,它提供了一个强大、优雅的来创建、分享和浏览数据的方式。
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证