代理模式-静态代理
静态代码模式的基本介绍
静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类
特别提醒:代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法。
代码示例
共同的接口
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("语文"); }
结果


浙公网安备 33010602011771号