为什么需要静态代理
1.目地是将业务代码与日志代码完全分离,实现松散耦合.
2.代理对象与被代理对象必须实现同一接口,在代理对象中实现与日志记录的相关服务,并在需要的时候呼叫被代理对象,而被代理对象只保留业务代码.
下面做个小例子
创建Subject接口
package cn.happy.day05; /** * Created by Administrator on 2018/3/6. */ //抽象代理 public interface Subject { public void print(); }
RealSubject类实现Subject
package cn.happy.day05; /** * Created by Administrator on 2018/3/6. */ //真实主题 public class RealSubject implements Subject { public void print() { System.out.println("--------正在打印书本--------"); } }
ProxySubject类实现Subject
package cn.happy.day05; /** * Created by Administrator on 2018/3/6. */ //代理主题 public class ProxySubject { private RealSubject realSubject=new RealSubject(); public void print(){ //加入检查功能 前置增强 check(); realSubject.print(); } public void check(){ System.out.println("----正在检查纸张是否合格------"); } }
书写测试类
//静态代理 @Test public void Proxy(){ //真实主题 RealSubject realSubject=new RealSubject(); //代理主题 ProxySubject proxySubject=new ProxySubject(); proxySubject.print(); }
结果