java 정적 에이전트 동적 에이전트 깊이 학습

1. 프록시 모델 프록시 모델은 자주 사용하는 자바 디자인 모델로 프록시 클래스와 의뢰 클래스가 같은 인터페이스를 가진 것이 특징이다. 프록시 클래스는 주로 의뢰 클래스의 미리 처리 메시지, 필터 메시지, 메시지를 의뢰 클래스에 전달하고 사후 처리 메시지 등을 책임진다.대리류와 위탁류 사이에는 일반적으로 관련 관계가 존재한다. 하나의 대리류의 대상은 하나의 위탁류의 대상과 관련된다. 대리류의 대상 자체는 진정으로 서비스를 실현하지 않고 위탁류의 대상을 호출하는 관련 방법을 통해 특정한 서비스를 제공한다.에이전트의 창설 시기에 따라 에이전트 종류는 두 가지로 나눌 수 있다. 정적 에이전트: 프로그래머가 만들거나 특정 도구가 자동으로 원본 코드를 생성하여 컴파일하는 것이다.프로그램이 실행되기 전에 프록시 클래스의.class 파일이 이미 존재합니다.동적 에이전트: 프로그램이 실행될 때 반사 메커니즘을 활용하여 동적으로 만듭니다.2. 단일 정적 에이전트
 
public interface CountDao
{
//
public void queryCount();
}
public class CountDaoImpl implements CountDao
{
public void queryCount()
{
System.out.println(" ...");
}
}
public class CountTrancProxy implements CountDao
{
private CountDao countDao;
public CountProxy(CountDao countDao)
{
this.countDao = countDao;
}
@Override
public void queryCount()
{
System.out.println("tranc start");
countDao.queryCount();
System.out.println("tranc end");
}
}
public class TestCount
{
public static void main(String[] args)
{
CountTrancProxy countProxy = new CountTrancProxy(new CountDaoImpl());
countProxy.updateCount();
}
}
tranc start 계정 보기 방법...trancend 3, 여러 개의 정적 에이전트가 위 코드를 바탕으로 추가되었습니다
 
public class CountLogProxy implements CountDao
{
private CountDao countDao;
public CountLogProxy(CountDao countDao)
{
this.countDao = countDao;
}
@Override
public void queryCount()
{
System.out.println("Log start");
countDao.queryCount();
System.out.println("Log end");
}
}
호출 코드가 됩니다
 
// ,
public static void main(String[] args)
{
CountTrancProxy trancProxy = new CountTrancProxy(new CountDaoImpl());
CountLogProxy logPro = new CountLogProxy(trancProxy);
logPro.queryCount();
}
Log start 트랜잭션 처리 전에 계정 조회 방법...사무 처리 후Log end 4. 요약은 프록시 클래스로 인터페이스를 계승하거나 실현하는 두 가지 방식으로 프록시 효과에 도달할 수 있지만 여러 프록시 클래스가 서로 조합되어야 할 때 계승이 유연하지 않고 프록시 클래스를 계속 다시 작성해야 하기 때문에 인터페이스를 실현하는 방식은 쉽게 집합을 통해 프록시 클래스 간의 조합을 실현할 수 있다.

좋은 웹페이지 즐겨찾기