Heim  >  Artikel  >  Java  >  Beispielfreigabe zum Adaptermuster in Java

Beispielfreigabe zum Adaptermuster in Java

黄舟
黄舟Original
2017-09-23 10:04:011617Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zum Adaptermuster vorgestellt, einem Entwurfsmuster in Java. Das Adaptermuster konvertiert die Schnittstelle einer Klasse in eine andere vom Kunden erwartete Schnittstelle. Adapter ermöglichen die enge Zusammenarbeit ursprünglich inkompatibler Klassen. Freunde in Not können sich auf

Adapter Pattern of Design Patterns in Java

Vorwort:

Das Adaptermuster kann eine Klasse oder Schnittstelle auf eine andere, aber verwandte Schnittstelle anwenden. Die Hauptmethode besteht darin, eine Implementierungsklasse der Zielschnittstelle zu deklarieren und eine Implementierungsklasse in der Klasse zu deklarieren, die angepasst wird Als Parameter werden die passende Klasse bzw. Schnittstelle (Adapter) und die Instanz des Adaptee verwendet, sodass bei Implementierung der Zielschnittstelle die Instanz des Adaptee aufgerufen werden kann, ergänzt um einige zusätzliche Operationen. Der Hauptteil des Adaptermusters besteht aus drei Teilen: dem Adapter, der Adapterimplementierungsklasse und dem Adapter. Die spezifische Klassenstruktur ist wie folgt:

Hier werden die Objekte des Adaptee auf kombinierte Weise in die Adapterklasse eingefügt, sodass sowohl der Adaptee als auch sein Implementierer dies verwenden können Adapter. Der Vorteil des Adaptermusters besteht darin, dass es Objekte unterschiedlichen Typs, aber mit ähnlichen Arbeitszwecken, kompatibel machen kann. Der Nachteil besteht darin, dass bei großen Zielschnittstellen viel zusätzlicher Code erforderlich ist, um die Kompatibilitätsarbeit durchzuführen.

Hier ist ein Beispiel, das nicht sehr realistisch ist, um das Adaptermuster zu veranschaulichen. Sowohl Truthähne als auch Enten können quaken und fliegen, aber Truthähne und Enten quaken anders und Truthähne können nicht so weit fliegen wie Enten. Wenn Sie einen Truthahn als Ente verkleiden möchten, müssen Sie das Truthahnobjekt auf bestimmte Weise kleiden. Hier können wir eine Kleidungsklasse deklarieren, die auch eine Art Ente ist Ente. Die spezifische Klassenimplementierung lautet wie folgt:

Zielschnittstelle (Duck-Schnittstelle):


public interface Duck {
  void quack();
  void fly();
}
Normale Implementierung der Zielschnittstelle (Duck-Implementierung):


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

  @Override
  public void fly() {
    System.out.println("I'm flying");
  }
}
Adapterschnittstelle (Türkei-Schnittstelle):


public interface Turkey {
  void gobble();
  void fly();
}
Im Allgemeinen durch den Adapter implementiert (Türkei). Typ):


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");
  }
}
Adapter:


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();
    }
  }
}
Durch den Truthahnadapter passen wir einen Truthahn an in eine Ente. Hier muss erklärt werden, dass sowohl der Adaptermodus als auch der Dekoratormodus das Quellobjekt dekorieren, um einen bestimmten Effekt zu erzielen. Der Unterschied zwischen dem Adaptermodus und dem Dekoratormodus besteht jedoch darin, dass der Adaptermodus das Quellobjekt so anpasst, dass es kann der A-spezifischen Schnittstelle entsprechen, und das Dekorationsmuster ist eine Erweiterung der Funktionalität des Quellobjekts, sodass es mehr Arbeit leisten kann.

Das obige ist der detaillierte Inhalt vonBeispielfreigabe zum Adaptermuster in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn