//用户操作的接口
public interface User {
public void add();
public void update();
}
//用户接口的实现类
public class UserImpl implements User {
@Override
public void add() {
// TODO Auto-generated method stub
System.out.println("用户添加");
}
@Override
public void update() {
// TODO Auto-generated method stub
System.out.println("用户修改");
}
}
//现在有这种情况出现,在某些地方使用UserImpl的方法是需要在前面打印“xx 方法调用之前。。。。”,"xx方法调用结束。。。",而有些地方不需要,怎样来解决这些问题呢,接下来,我们用代理来解决这个问题。
//这就是userImpl的代理类,该模式成功解决了上述问题。
public class ProxyT implements User {
private UserImpl userImpl;
ProxyT(UserImpl userImpl) {
//super();
this.userImpl = userImpl;
}
@Override
public void add() {
// TODO Auto-generated method stub
System.out.println(" add 方法调用之前。。。。");
userImpl.add();
System.out.println("add 方法调用结束。。。。");
}
@Override
public void update() {
// TODO Auto-generated method stub
System.out.println("update 方法调用之前。。。。");
userImpl.update();
System.out.println(" update 方法调用结束。。。。");
}
public class ProxyTest {
//代理类的测试方法
@Test
public void test(){
//new UserImpl();
ProxyT proxy=new ProxyT(new UserImpl());
proxy.add();
proxy.update();
}
}
//可能有人会这么想了,如果想要多个类,比如person,tree等等的,是不是要每个类都要对应的代理类呢,象ProxyT,这不是很繁琐吗?不要急,在接下来的博客中,我会分享动态代理,来解决上述问题。
}