이 글에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!