>  기사  >  Java  >  Java의 어댑터 패턴 공유 예

Java의 어댑터 패턴 공유 예

黄舟
黄舟원래의
2017-09-23 10:04:011610검색

이 글에서는 Java의 디자인 패턴인 어댑터 패턴에 대한 관련 정보를 주로 소개합니다. 어댑터 패턴은 클래스의 인터페이스를 고객이 기대하는 다른 인터페이스로 변환합니다. 어댑터를 사용하면 원래 호환되지 않는 클래스가 긴밀하게 협력할 수 있습니다. 필요한 친구는 Java의 디자인 패턴 중 어댑터 패턴을 참조할 수 있습니다.

머리말:

어댑터 패턴은 하나의 클래스 또는 인터페이스를 다른 클래스에 적용할 수 있습니다. 인터페이스는 대상 인터페이스의 구현 클래스를 선언하고 이 클래스에서 적응된 클래스 또는 인터페이스(적응자)를 매개변수로 사용하는 생성자와 적응자를 선언하여 대상 인터페이스를 구현할 때 적응자의 인스턴스가 다음을 수행할 수 있도록 합니다. 몇 가지 추가 작업으로 보완됩니다. 어댑터 패턴의 본체는 어댑터, 어댑터 구현 클래스 및 어댑터의 세 부분으로 구성됩니다. 구체적인 클래스 구조는 다음과 같습니다.

여기서는 Adaptee의 객체가 결합된 방식으로 어댑터 클래스에 배치되며, 그러면 Adaptee와 해당 구현자 모두가 어댑터를 사용할 수 있습니다. 어댑터 패턴의 장점은 유사한 작업 목적을 가진 다양한 유형의 개체를 호환 가능하게 만들 수 있다는 것입니다. 단점은 대상 인터페이스가 크면 호환성 작업을 수행하기 위해 많은 추가 코드가 필요하다는 것입니다. ㅋㅋㅋ                                    어댑터 패턴을 설명하기 위한 실제 예로 사용됩니다. 칠면조와 오리는 모두 꽥꽥 소리를 내고 날 수 있지만, 칠면조와 오리는 꽥꽥거리는 소리가 다르며, 칠면조는 오리만큼 멀리 날 수 없습니다. 칠면조를 오리로 위장하려면 칠면조 개체에 어떤 방식으로 옷을 입혀야 합니다. 여기서는 칠면조가 드레스에 들어가면 드레스 클래스도 선언할 수 있습니다. 오리. 구체적인 클래스 구현은 다음과 같습니다.

Target 인터페이스(duck 인터페이스):

public interface Duck {
  void quack();
  void fly();
}

대상 인터페이스의 일반 구현(duck 구현):


public class MallardDuck implements Duck {
  @Override
  public void quack() {
    System.out.println("Quack");
  }

  @Override
  public void fly() {
    System.out.println("I'm flying");
  }
}

Adaptee 인터페이스(터키 인터페이스):


public interface Turkey {
  void gobble();
  void fly();
}

어댑터는 일반적으로 구현됩니다(칠면조 클래스):


public class WildTurkey implements Turkey {
  @Override
  public void gobble() {
    System.out.println("Gobble gobble");
  }

  @Override
  public void fly() {
    System.out.println("I'm flying a short distance");
  }
}

어댑터:


public class TurkeyAdapter implements Duck {
  private Turkey turkey;

  public TurkeyAdapter(Turkey turkey) {
    this.turkey = turkey;
  }

  @Override
  public void quack() {
    turkey.gobble();
  }

  @Override
  public void fly() {
    for (int i = 0; i < 5; i++) {
      turkey.fly();
    }
  }
}

칠면조 어댑터를 통해 칠면조를 오리로 개조했습니다. 여기서 설명해야 할 것은 어댑터 모드와 데코레이터 모드 모두 특정 효과를 얻기 위해 소스 객체를 장식한다는 것입니다. 그러나 어댑터 모드와 데코레이터 모드의 차이점은 어댑터 모드가 소스 객체를 적응시키도록 한다는 것입니다. A 특정 인터페이스를 준수할 수 있으며 데코레이터 패턴은 더 많은 작업을 수행할 수 있도록 소스 객체의 기능을 확장한 것입니다.

위 내용은 Java의 어댑터 패턴 공유 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.