Java代理系列-静态代理

代理模式能够作不少事,像hibernate,spring都使用了代理模式。java

spring的aop就是用代理作的。spring

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

今天先写一写静态代理测试

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

接口HelloInterface
spa

接口实现类HelloInterfaceImplhibernate

静态代理类HelloStaticProxy代理

测试类HelloTestcode

首先写一个接口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

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

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

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

相关文章
相关标签/搜索