코드 사본은 다음과 같습니다.
import java.lang.reflect.invocationHandler;
import java.lang.reflect.method;
java.lang.reflect.proxy import;
공개 클래스 로그 핸들러는 invocationHandler {
개인 대상 대의원;
public object bind (객체 대의원) {
this.delegate = 대표;
return proxy.newproxyInstance (delegate.getClass (). getClassLoader (),
delegate.getClass (). getInterfaces (), this);
}
@보수
공개 객체 호출 (객체 프록시, 메소드 메소드, 개체 [] args)
던질 수있는 {
객체 결과 = null;
노력하다 {
System.out.println ( "메소드 시작 :" + 메소드);
result = method.invoke (Delegate, Args);
System.out.println ( "메소드 엔드 :" + 메소드);
} catch (예외 e) {
e.printstacktrace ();
}
반환 결과;
}
}
코드 사본은 다음과 같습니다.
공공 인터페이스 동물 {
공개 void hello ();
}
Dynamic Proxy는 프록시 모델의 확장 형태이며 프레임 워크 설계 및 개발에 널리 사용됩니다 (특히 AOP 기반 프레임 워크).
코드 사본은 다음과 같습니다.
공공 계급 원숭이를 구현하는 동물 {
@보수
public void hello () {
// TODO 자동 생성 메소드 스텁
System.out.println ( "Hello");
}
}
코드 사본은 다음과 같습니다.
공개 클래스 메인 {
public static void main (String [] args) {
loghandler loghandler = new loghandler ();
동물 동물 = (동물) loghandler.bind (New Monkey ());
Animal.hello ();
}
}