码迷,mamicode.com
首页 > 编程语言 > 详细

spring之Aop的静态代理

时间:2016-04-25 00:29:23      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

代理(proxy)是一种设计模式,提供了对目标对象的访问方式,即通过代理访问目标对象。这样好处:可以在目标对象实现的基础上,增强额外的功能。(扩展目标对象的功能)

  1.首先定义一个接口类:

package a_static;
//接口
public interface IUserDao {
    void save();

}

  2.定义一个目标对象类:

package a_static;
/**
 * 目标对象
 * @author Administrator
 *
 */
public class UserDao implements IUserDao{

    public void save() {
        // TODO Auto-generated method stub
        System.out.println("-----已经保存数据------");
        
    }
    

}

  3.定义一个代理对象类:

package a_static;
/**
 * 代理对象(静态代理)
 *  代理对象,要实现与目标对象一样的接口
 * @author Administrator
 *
 */
public class UserDaoProxy implements IUserDao{
    //接受保存目标对象
    private IUserDao target;
    public  UserDaoProxy(IUserDao target){
        this.target=target;
    }

    public void save() {
        // TODO Auto-generated method stub
        System.out.println("开始事物");
        target.save();
        System.out.println("开始事物");
        
    }

}

  4.定义一个测试类:

package a_static;

public class App {
    public static void main(String[] args) {
        // 目标对象
        IUserDao target=new UserDao();
        // 代理
        IUserDao proxy=new UserDaoProxy(target);
        proxy.save(); // 执行的是,代理的方法
    }

}

总结:

静态代理的优点:可以做到在不修目标对象功能的前提下,对目标对象功能扩展

缺点:1.因为代理对象,需要与对象实现一样的接口。所以有很多代理类,类太多

         2.一旦接口增加方法,目标对象与代理对象都要维护

解决:可以使用动态代理

 

    

spring之Aop的静态代理

标签:

原文地址:http://www.cnblogs.com/liu666liu/p/5428863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!