网络美文

Javaweb-动态代理之代理工厂模式实现

前面做了一个Waiter的动态代理的练习,这篇继续来写一个练习,一个动态代理工厂的例子,这个例子在以后学习Spring的时候会有帮助。这个动态工厂的主要作用就是包装了下目标对象和前置增强和后置增强。工厂类的使用步骤我们要设计一个动态代理工厂类,以下是使用这个工程类的步骤。来源:凯哥Java(kaigejava)1. 创建代理工厂2. 给工厂设置三样东西1) 目标对象,

前面做了一个Waiter的动态代理的练习,这篇继续来写一个练习,一个动态代理工厂的例子,这个例子在以后学习Spring的时候会有帮助。这个动态工厂的主要作用就是包装了下目标对象和前置增强和后置增强。



工厂类的使用步骤

我们要设计一个动态代理工厂类,以下是使用这个工程类的步骤。

来源:凯哥Java(kaigejava)

1. 创建代理工厂

2. 给工厂设置三样东西

1) 目标对象,调用方法setTargetObject()

2) 前置增强,调用setBeforeAdvice(该接口的具体实现)

3) 后置增强,调用setAfterAdvice(该接口的具体实现)

3. 调用createProxy方法得到代理对象

执行代理对象方法时,按照以下顺序执行。

1) 执行BeforeAdvice的before方法

2) 执行目标对象的目标方法

3) 执行AfterAdvice的after方法


前提准备

新建一个包,把前面的Waiter.java 和ManWaiter.java拷贝过来。


创建动态代理工厂类

这里我们的代理工厂类,先给出目标对象,前置增强和后置增强,然后创建set和get方法。

下面是前置增强接口代码

package demo1;


/**

*     前置增强  

* @author anthony

*

*/

public interface BeforeAdvice {

    

    public void before();

}


下面是后置增强接口代码

package demo1;


/**

*    后置增强

* @author anthony

*

*/

public interface AfterAdvice {

    public void after();

}


这里面,我们暂时不知道程序员会在前置增强和后置增强写什么具体代码,所以这里我们利用接口来实现,程序员到时候写代码的时候,前置增强必须要实现前置增强接口中的before方法,后置增强必须实现后置增强接口中的after方法。


下面是代理工厂类的代码

package demo1;


/**

*     这个类用来生成代理对象

*     需要所有参数

*     *目标对象

*     *增强

* @author anthony

*

*/

public class ProxyFactory {

    

    private Object targetObject; // 目标对象

    private BeforeAdvice beforeAdvice; // 前置增强

    private AfterAdvice afterAdvice; // 后置增强

    

    

    public Object getTargetObject() {

        return targetObject;

    }

    public void setTargetObject(Object targetObject) {

        this.targetObject = targetObject;

    }

    public BeforeAdvice getBeforeAdvice() {

        return beforeAd

原创不易,完成人机校验,阅读全文

相关推荐