Design pattern (动态代理与AOP,面向切片编程)

在上一篇动态代理中,我们了解到动态代理可增加代码的复用性。这篇博客将讲述动态代理的又一个实际应用,面向切片编程。我们先通过图解来了解什么面向切片。
在这里插入图片描述
从图中我们可以看出,我们希望回调目标对象的方法可以是动态切换的,这可以生动地描述为从老的逻辑代码中切入一些新的逻辑代码,即AOP。

class EatableUtil{
	
	public void method1(){
		System.out.println("Invoking method1.");
	}
	
	public void method2() {
		System.out.println("Invoking method2.");
	}
	
}

class ActualInvocationHandler implements InvocationHandler{
	private Object object;
	
	public void bind(Object object) {
		this.object = object;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		EatableUtil eatableUtil = new EatableUtil();
		//Invoking method1
		eatableUtil.method1();
		
		//This method can contain any logic.
		Object returValue = method.invoke(this.object, args);
		
		//Invoking method2
		eatableUtil.method2();
		return returValue;
	}

以上代码承接上一篇的动态代理代码。

输出:

Invoking method1.
Directly eat.
Invoking method2.
Invoking method1.
Producing Nike cloth.
Invoking method2.
发布了70 篇原创文章 · 获赞 4 · 访问量 3046

猜你喜欢

转载自blog.csdn.net/qq_34515959/article/details/104936194