java之静态代理模式

导读:本篇文章讲解 java之静态代理模式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

静态代理模式:

代理模式:

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

静态代理模式的实现要求:

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

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

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

举例:

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

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();
    }
}

输出:

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

这种代理模式的好处体现在:代理对象可以做很多被代理对象做不了的事情,代理对象可以专注做自己的事情

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81393.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!