디자인 모드 14: 프 록 시 모드

1889 단어
프 록 시 모드 (Proxy DP) 는 다른 대상 에 게 이 대상 의 접근 을 제어 하기 위해 대역 이나 자리 표시 자 를 제공 합 니 다 (원문: Provide a surrogate or place holder for another object to control access to it).프 록 시 모드 는 일반적으로 세 가지 프 록 시: 원 격 프 록 시, 가상 프 록 시 와 보호 프 록 시 (Remote Proxy, Virtual Proxy and Protection Proxy) 가 있 습 니 다.원 격 에이 전 트 는 서로 다른 주소 공간의 대상 에 게 로 컬 로 대표 합 니 다.가상 대 리 는 필요 에 따라 비 싼 대상 을 만 드 는 데 쓰 인 다.프 록 시 제어 접근 권한 보호.
코드: 주술사:
/**
 * 
 * Wizard
 *
 */
public class Wizard {

  private final String name;

  public Wizard(String name) {
    this.name = name;
  }

  @Override
  public String toString() {
    return name;
  }

}

위 자 드 타 워 인터페이스:
/**
 * WizardTower interface
 */
public interface WizardTower {

  void enter(Wizard wizard);
}

상아탑, 무당 탑의 실현 류:
/**
 * 
 * The object to be proxyed.
 * 
 */
public class IvoryTower implements WizardTower {

  private static final Logger LOGGER = LoggerFactory.getLogger(IvoryTower.class);

  public void enter(Wizard wizard) {
    LOGGER.info("{} enters the tower.", wizard);
  }

}

주술사 탑 대리:
/**
 * 
 * The proxy controlling access to the {@link IvoryTower}.
 * 
 */
public class WizardTowerProxy implements WizardTower {

  private static final Logger LOGGER = LoggerFactory.getLogger(WizardTowerProxy.class);

  private static final int NUM_WIZARDS_ALLOWED = 3;

  private int numWizards;

  private final WizardTower tower;

  public WizardTowerProxy(WizardTower tower) {
    this.tower = tower;
  }

  @Override
  public void enter(Wizard wizard) {
    if (numWizards < NUM_WIZARDS_ALLOWED) {
      tower.enter(wizard);
      numWizards++;
    } else {
      LOGGER.info("{} is not allowed to enter!", wizard);
    }
  }
}

무당 탑 대리 류 의 역할 은 무당 의 수 를 제한 하 는 것 으로 인원 이 제한 에 이 르 렀 을 때 들 어 갈 수 없다 는 것 을 알 수 있다.이것 은 보호 대리 에 속한다.

좋은 웹페이지 즐겨찾기