为什么需要静态代理
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();
}
结果