代理模式-静态代理

静态代码模式的基本介绍

 

静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类

特别提醒:代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法。

代码示例

共同的接口

package com.llf.proxy.staticproxy;

/**
 * @author linglongfang
 */
public interface Teach {
    /**教书*/
    void teach();

    /**布置作业*/
    void setHomeWork(String subject);
}

目标对象

package com.llf.proxy.staticproxy;

/**
 * @author linglongfang
 */
public class Teacher implements Teach {

    private String name;

    public Teacher(String name){
        this.name = name;
    }

    @Override
    public void teach() {
        System.out.println(name+":我开始上课了");
    }

    @Override
    public void setHomeWork(String subject) {
        System.out.println(name+":我要布置作业了"+",科目:"+subject);
    }
}

 

代理对象类

package com.llf.proxy.staticproxy;

/**
 * @author linglongfang
 */
public class TeacherProxy implements Teach {

    private Teacher teacher;

    public TeacherProxy(Teacher teacher) {
        this.teacher = teacher;
    }

    @Override
    public void teach() {
        System.out.println("准备好课本");
        teacher.teach();
        System.out.println("收拾好课本");
    }

    @Override
    public void setHomeWork(String subject) {
        System.out.println("发作业本");
        teacher.setHomeWork(subject);
        System.out.println("放学");
    }
}

 

测试方法

@Test
public void testStaticProxy(){
    Teacher teacher = new Teacher("llf");
    TeacherProxy teacherProxy = new TeacherProxy(teacher);
    teacherProxy.teach();
    System.out.println("--------------");
    teacherProxy.setHomeWork("语文");
}

 

结果

 

posted @ 2020-04-18 22:31  linglongfang  阅读(114)  评论(0)    收藏  举报