为你的j2ee应用增加AOP 特性
2006-02-06 15:34
323 查看
你不需要修改现有的代码或者它的接口,应用Gang of Four (GoF) Decorator 模式提供了一种添加AOP的途径。
假设我们有一个简单的接口:
public interface IMyBusinessObject {
public String doExecute(String in);
}
下面是这个接口的实现类
public class MyBusinessObject implements IMyBusinessObject {
public String doExecute(String in) {
System.out.println("Here in MyBusinessObject doExecute: input :" + in);
return in;
}
}
我们现在需要在执行doExecute方法之前和之后增加一些行为,Decorator 模式可以帮助我们很容易的实现。
首先定义一个 abstract decorator class
现在我们定义一个 DebugConcreteDecorator 扩展 ADecorator ,目的是在调用doExecute方法前后,添加Debug信息。
public class DebugConcreteDecorator extends ADecorator {
public String doExecute(String in) {
System.out.println("DebugConcreteDecorator: before method : doExecute ");
String ret = target.doExecute(in);
System.out.println("DebugConcreteDecorator: after method : doExecute ");
return ret;
}
}
在调用时,我们可以使用下面的代码。
IMyBusinessObject aIMyBusinessObject = new MyBusinessObject();
IMyBusinessObject wrappedObject =
new DebugConcreteDecorator(aIMyBusinessObject);
wrappedObject.doExecute("Hello World");
输出如下:
DebugConcreteDecorator: before method : doExecute
Here in MyBusinessObject doExecute: input :Hello World
DebugConcreteDecorator: after method : doExecute
假设我们有一个简单的接口:
public interface IMyBusinessObject {
public String doExecute(String in);
}
下面是这个接口的实现类
public class MyBusinessObject implements IMyBusinessObject {
public String doExecute(String in) {
System.out.println("Here in MyBusinessObject doExecute: input :" + in);
return in;
}
}
我们现在需要在执行doExecute方法之前和之后增加一些行为,Decorator 模式可以帮助我们很容易的实现。
首先定义一个 abstract decorator class
public abstract class ADecorator implements IMyBusinessObject { protected IMyBusinessObject target; public void setTarget(IMyBusinessObject target_) { this.target = target_; } public ADecorator(){} public ADecorator(IMyBusinessObject target_) { setTarget(target_); } }
现在我们定义一个 DebugConcreteDecorator 扩展 ADecorator ,目的是在调用doExecute方法前后,添加Debug信息。
public class DebugConcreteDecorator extends ADecorator {
public String doExecute(String in) {
System.out.println("DebugConcreteDecorator: before method : doExecute ");
String ret = target.doExecute(in);
System.out.println("DebugConcreteDecorator: after method : doExecute ");
return ret;
}
}
在调用时,我们可以使用下面的代码。
IMyBusinessObject aIMyBusinessObject = new MyBusinessObject();
IMyBusinessObject wrappedObject =
new DebugConcreteDecorator(aIMyBusinessObject);
wrappedObject.doExecute("Hello World");
输出如下:
DebugConcreteDecorator: before method : doExecute
Here in MyBusinessObject doExecute: input :Hello World
DebugConcreteDecorator: after method : doExecute
相关文章推荐
- 用GoF装饰者模式为你的J2EE应用增加AOP特性
- 为你的基于SPRING的应用增加简单规则引擎
- J2EE应用下基于AOP的抓取策略实现
- 为你的基于SPRING的应用增加简单规则引擎(转)
- J2EE中的Config与Context参数应用
- J2EE应用开发中与Oracle数据库的连接
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用010-Slot和Parallelism的深入分析005
- 【J2EE】:Java EE应用的组件
- JVM的运行原理以及JDK 7增加的新特性(二)
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用021-Flink中OutFormat设置(Scala版)001
- J2EE应用讲解(2)——Servlet基础理论
- 【转】三种J2EE应用中与Oracle数据…
- 便携的J2EE应用
- IBM Rational助您轻松完成基于J2EE的Web应用系统的性能测试和性能优化(二)
- 应用Map作为ActionForm的属性,动态增加ActionForm的“属性”
- OpenWRT 增加内核模块及应用方法
- 六点J2EE应用中运用“配置”的最佳实践
- 如何把ireport中自定义的主题应用到J2EE项目中简述
- J2EE应用框架及核心组件、API
- 设计者应增加对本机缓存特性的注意度