java 代理

//用户操作的接口

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,这不是很繁琐吗?不要急,在接下来的博客中,我会分享动态代理,来解决上述问题。

}

原文地址:https://www.cnblogs.com/liuquande/p/3803995.html