详解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静态代理模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341