java 静态代理模式学习(1)

http://blog.csdn.net/hejingyuan6/article/details/36203505

java 的代理模式为aop提供了,动态记录方法执行的理论基础,简单的配置即可记录方法执行前后中,控制方法的执行,现在看一下静态代理:

静态代理:目标接口提供了,很多方法,现在提供一个实现类和代理类,他们都去继承目标接口,代理类为实现类作一个封装,为实现类的方法提供方法执行前,后的方法或者判断方法执行的条件,来记录和控制方法的执行
代码如下:

提供一个接口

package com.lzkj.kedacollege.aop;

public interface Sleep {

    public void sleepTime();

}

实现类

package com.lzkj.kedacollege.aop;

public class Cat implements Sleep{

    public void sleepTime() {
        System.out.println("cat is sleeping");

    }

}

代理类

package com.lzkj.kedacollege.aop;

import java.lang.reflect.Method;

import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;

public class SleepReady implements MethodBeforeAdvice,AfterReturningAdvice{

    public void afterReturning(Object arg0, Method arg1, Object[] arg2,
            Object arg3) throws Throwable {
        // TODO Auto-generated method stub
        System.out.println("eat food");

    }

    public void before(Method arg0, Object[] arg1, Object arg2)
            throws Throwable {
        // TODO Auto-generated method stub
        System.out.println("jieshou");

    }



}

测试

package com.lzkj.kedacollege.aop;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AopTest {
     public static void main(String[] args){
            ApplicationContext appCtx = new ClassPathXmlApplicationContext("spring-context.xml");
            Sleep sleeper = (Sleep)appCtx.getBean("cat");
            sleeper.sleepTime();
        }

}

结果:

jieshou
cat is sleeping
eat food

静态代理接口增加方法就的重新写代理类,很不方便,动态代理解决了这个问题,接下来看一下动态代理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值