J2EE(9) 정적 에이전트와 동적 에이전트-간접적'미'

2492 단어 동적 에이전트
생활 속의 많은 예는 간접적으로 통제하고 방문하는 것이다. 예를 들어 당신이 한 사람을 찾아 직접 가지 않고 다른 사람이 대신 하도록 하는 것이 가장 간단한 대리 모델이다. 간접 통신의 예이고 대상 간의 간접 통신도 마찬가지로 이미지 디자인에 있어 중요한'심미관'이다.간접 통신은 대상 간의 결합성을 낮추고 복용하기 쉬운 구조 설계를 할 수 있다.
간접 제어 대상의 상호작용은 중요한 프로그래밍 사상으로 많은 모델이 이런 사상을 구현했다. 예를 들어 장식 모델, 어댑터 모델, 대리 모델은 모두 간접적인 방식으로 특정한 목적을 실현한다.
여기서 주로 에이전트 모델을 소개하는데 현실 생활에서든 컴퓨터 기술에서든 에이전트를 사용하는 곳이 매우 많은데 주로 정적 에이전트와 동적 에이전트로 나뉜다.
우리는 모두 기방 요금 시스템을 해 봤다. 이 시스템을 예로 들면 이 시스템에는 사용자가 조작하는 사용자 인터페이스 IUser와 이 인터페이스를 실현한 클래스 UserImp이 있다. 자바 코드는 다음과 같다.
/**
 *  
 * @author LLS
 *
 */
public interface IUser
{
	  // 
      void addUser();
      // 
      void delUser();
}
사용자 구현 클래스
/**
 *  
 * @author LLS
 *
 */
public class UserImpl implements IUser 
{

	public void addUser() {
		//  
	}
	
	public void delUser() {
		//  
	}
}
        
이 예에서 우리는 사용자를 추가하거나 삭제할 때 권한 검사를 해야 할 수도 있다. 권한에 부합되는 사람은 관련 동작을 수행할 수 있다. 그렇지 않으면 실행할 수 없다. 그러면 코드를 어떻게 수정해야 더욱 적절하게 할 수 있는지, 그리고 실제 작성 과정에서 권한 모듈이 필요하지만 때로는 더욱 빠른 테스트를 위해 권한 모듈을 잠시 닫기를 원한다.어떻게 해야만 이런 임시 수요를 더욱 쉽게 처리할 수 있습니까?우리는 현재 프록시 모드를 사용하여 이러한 작업을 완성하고 있으며, 현재는 UserImplProxy라는 클래스를 계속 작성합니다.
 
사용자 에이전트 클래스
/**
 *  
 * @author LLS
 *
 */
public class UserImplProxy implements IUser 
{
	// 
    private UserImpl userImpl;
    // 
	public void addUser()
	{
		// 
        preIdentify();

		if( userImpl == null )
        {
			userImpl = new UserImpl();
		}
		// 
		userImpl.addUser();
		// , 
        postIdentify();
	}
	
	public void delUser()
	{
        preIdentify();

		if( userImpl == null )
        {
			userImpl = new UserImpl();
		}

		userImpl.addUser();

        postIdentify();
	}
	// 
    private void preIdentify()
    {
		System.out.println(" !");
    }
    // 
    private void postIdentify()
    {
		System.out.println(" ");
    }
}
이렇게 하면 권한 검증 기능을 쉽게 실현할 수 있고 매우 유연하다.
위쪽은 정적 프록시 모드입니다. 프록시 대상이 동적 프록시를 사용할 수 있는지 모르면... 업데이트 중
 

좋은 웹페이지 즐겨찾기