Java代理系列-静态代理

本文详细介绍了静态代理模式的实现方式,通过创建一个简单的例子来展示如何在方法调用前后添加额外的操作,类似于AOP的功能。文章包括接口定义、实现类、代理类及测试类的代码,并展示了最终的运行结果。

代理模式可以做很多事,像hibernate,spring都使用了代理模式。

spring的aop就是用代理做的。

本系列分为4章,静态代理,动态代理热身,动态代理,cglib代理

今天先写一写静态代理

本例目的是在要调用的方法前后输出start和end,会使用四个类

接口HelloInterface

接口实现类HelloInterfaceImpl

静态代理类HelloStaticProxy

测试类HelloTest

首先写一个接口HelloInterface,定义一个say方法

package net.hldh.river.staticproxy;

/**
 * Created by liuhj on 2015/12/1.
 */
public interface HelloInterface {
    public void say();
}

实现接口HelloInterfaceImpl,打印Hello

package net.hldh.river.staticproxy;

/**
 * Created by liuhj on 2015/12/1.
 */
public class HelloInterfaceImpl implements HelloInterface {
    @Override
    public void say() {
        System.out.println("Hello");
    }
}

代理类HelloStaticProxy实现,在代理的方法内加前后环绕,是不是很像AOP

package net.hldh.river.staticproxy;

/**
 * Created by liuhj on 2015/12/1.
 */
public class HelloStaticProxy{

    //spring 依赖注入?类似吧
    private HelloInterface helloInterface;
    public HelloStaticProxy(HelloInterface helloInterface){
        this.helloInterface = helloInterface;
    }

    public void say_proxy(){
        System.out.println("start");
        helloInterface.say();
        System.out.println("end");
    }
}


编写测试类HelloTest

package net.hldh.river.staticproxy;

/**
 * Created by liuhj on 2015/12/1.
 */
public class HelloTest {
    public static void main(String args[]){
        HelloStaticProxy proxy = new HelloStaticProxy(new HelloInterfaceImpl());
        proxy.say_proxy();
    }
}

输出结果

start
Hello
end

静态代理呢,使用的不是太多,主要是当你要修改接口或者其他方法时要修改代理类实现类等好多方法,好麻烦

下一章主要写写动态代理前需要知道的知识

才疏学浅,如有错误敬请指出,谢谢。

转载于:https://my.oschina.net/u/2519530/blog/538081

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值