동적 에이전트 JDK 다음 예
인터페이스 주제
공용 인터페이스 주제 { 공공 추상적 무효 요청 (); }
구현 클래스 RealSubject
공공 클래스 RealSubject이 구현 주제 { @Override 공공 무효 요청 () { 에서 System.out.println ( "realsubjct에서" ); } }
연기 수업
공공 클래스 DynamicSubject는 구현 의 InvocationHandler { 개인 개체 하위; 공공 DynamicSubject (개체 OBJ) { 이 .SUB = OBJ; } @Override 공용 객체 호출 (개체 프록시는 방법에있어서, [] args를 오브젝트) 가 발생 하는 Throwable { 에서 System.out.println ( "호출하기 전에"+ 법); method.invoke ( 이 .SUB, 인수); 에서 System.out.println ( "호출 한 후 :"+ 방법); 반환 널 (null)을 ; } }
클라이언트 클래스
공용 클래스 클라이언트 { 공공 정적 무효 메인 (문자열 []에 args) { RealSubject 중계국 = 새로운 RealSubject (); 핸들러의 InvocationHandler = 새로운 DynamicSubject (RS); 클래스 CLS = <?> rs.getClass (); 주제 대상 = (주제) 프록시. newProxyInstance (cls.getClassLoader () cls.getInterfaces (), 핸들러); () subject.request; } }
결과
호출하기 전에 : 공공 추상적 무효 com.learn.jvm.Subject.request () realsubjct에서 호출 한 후 : 공공 추상적 무효 com.learn.jvm.Subject.request ()