详解Java中的静态代理模式

这篇文章主要为大家介绍了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静态代理模式内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是详解Java中的静态代理模式的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java