djcproxy動(dòng)態(tài) Java 類(lèi)代理
djcproxy 是一個(gè)小型的 Java 庫(kù),實(shí)現(xiàn)動(dòng)態(tài) Java 類(lèi)代理。使用它可以在運(yùn)行時(shí)對(duì)已存在的對(duì)象創(chuàng)建代理對(duì)象,用來(lái)創(chuàng)建面向方面特性。例如度量某個(gè)方法的執(zhí)行時(shí)間,修改方法行為,記錄方法執(zhí)行等等。
完整示例代碼:
protected static class A {
public A() {
}
public int method() {
return 1;
}
}
private class Interceptor implements MethodInterceptor {
@Override
public Object intercept(Object obj, Method method, Object[] args)
throws Exception {
if (method.getName().equals("toString")) {
return "interceptedToString";
}
return 0;
}
}
@Test
public void given_Object_when_CreatingSource_then_GettingInterceptorResult()
throws Exception {
A a = new A();
ProxyFactory<A> factory = new ProxyFactory<>();
A s = factory.create(a, new Interceptor());
Assert.assertEquals("interceptedToString", s.toString());
Assert.assertEquals(0, s.method());
}評(píng)論
圖片
表情
