Java代理模式之静态代理

代理提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。 这样好处: 可以在目标对象实现的基础上,增强额外的功能操作。(扩展目标对象的功能)。

代理模式的关键点: 代理对象与目标对象。

静态代理需满足的条件:  代理对象,要实现与目标对象一样的接口。

下面通过给保存用户信息的方法加事务来体验下静态代理的运用:

//接口
public interface IUserDao {
    void save();
}
//目标对象
public class UserDaoImpl implements IUserDao{
    @Override
    public void save() {
        System.out.println("保存用户信息进入数据库");
    }
}
//代理对象(要实现与目标对象一样的接口)
public class UserDaoProxy implements IUserDao {
    private IUserDao target;

    public UserDaoProxy(IUserDao target) {
        this.target = target;
    }

    @Override
    public void save() {
        System.out.println("开始事务");
        target.save();
        System.out.println("提交事务");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        IUserDao target = new UserDaoImpl();
        IUserDao proxy = new UserDaoProxy(target);
        proxy.save();
    }
}

打印结果:

开始事务
保存用户信息进入数据库
提交事务

 

总结静态代理:
1、可以做到在不修改目标对象的功能前提下,对目标对象功能扩展。
2、缺点:
①因为代理对象,需要与目标对象实现一样的接口。所以会有很多代理类,类太多。
②一旦接口增加方法,目标对象与代理对象都要维护。

posted @ 2019-03-15 09:27  浅安时光i  阅读(126)  评论(0编辑  收藏  举报