创建主题接口创建被代理类,实现主题接口创建代理类,实现主题接口使用重写的构造方法创建代理类对象,调用要执行的方法。
public class TestProxy {
@Test
public void test1(){
TimeProxy tp = new TimeProxy(new GoodsDAO());
tp.add();
}
@Test
public void test2(){
TimeProxy tp = new TimeProxy(new UserDAO());
tp.add();
}
}
//主题接口
interface DAO{
void add();
}
//被代理类
class GoodsDAO implements DAO{
public void add(){
System.out.println("商品的添加");
}
}
class UserDAO implements DAO{
public void add(){
System.out.println("用户的添加");
}
}
//代理类
class TimeProxy implements DAO{
private DAO target;//target表示被代理者对象
public TimeProxy(DAO target) {
super();
this.target = target;
}
@Override
public void add() {
long start = System.currentTimeMillis();
target.add();//核心业务逻辑交还给被代理者
long end = System.currentTimeMillis();
System.out.println("时间差:" +(end-start));
}
}
在开发中,EmployeeSevice接口,相当于主题接口;
EmployeeService接口的实现类EmployeeServiceImpl,相当于被代理类
EmployeeServiceProxy相当于代理类