Maison >Java >javaDidacticiel >Exemple de partage sur le modèle d'adaptateur en Java
Cet article présente principalement des informations pertinentes sur le modèle d'adaptateur, un modèle de conception en Java. Le modèle d'adaptateur convertit l'interface d'une classe en une autre interface attendue par le client. Les adaptateurs permettent à des classes initialement incompatibles de travailler en étroite collaboration. Les amis dans le besoin peuvent se référer au
Modèle d'adaptateur des modèles de conception en Java
Préface :
Le modèle d'adaptateur peut appliquer une classe ou une interface à une autre interface différente mais liée. La méthode principale consiste à déclarer une classe d'implémentation de l'interface cible et à déclarer une classe d'implémentation dans la classe qui sera adaptée. la classe ou l'interface correspondante (adaptateur) et l'instance de l'adapté sont utilisées comme paramètres, de sorte que lorsque l'interface cible est implémentée, l'instance de l'adapté puisse être appelée, complétée par quelques opérations supplémentaires. Le corps principal du modèle d'adaptateur comprend trois parties : l'adaptateur, la classe d'implémentation de l'adaptateur et l'adaptateur. La structure de classe spécifique est la suivante :
Ici, les objets de l'adapté sont placés dans la classe de l'adaptateur de manière combinée, puis l'adapté et son implémenteur peuvent l'utiliser. adaptateur. L'avantage du modèle d'adaptateur est qu'il peut rendre compatibles des objets de types différents mais avec des objectifs de travail similaires. L'inconvénient est que si l'interface cible est volumineuse, beaucoup de code supplémentaire est nécessaire pour effectuer le travail de compatibilité.
Voici un exemple peu réaliste pour illustrer le patron de l'adaptateur. Les dindes et les canards peuvent cancaner et voler, mais les dindes et les canards cancanent différemment, et les dindes ne peuvent pas voler aussi loin que les canards. Si vous souhaitez déguiser une dinde en canard, vous devez habiller l'objet dinde d'une certaine manière. Ici, nous pouvons déclarer une classe vestimentaire, qui est également un type de canard. Lorsque la dinde entre dans la robe, elle se transforme en canard. canard. L'implémentation spécifique de la classe est la suivante :
Interface cible (interface canard) :
public interface Duck { void quack(); void fly(); }
Implémentation normale de l'interface cible (implémentation canard) :
public class MallardDuck implements Duck { @Override public void quack() { System.out.println("Quack"); } @Override public void fly() { System.out.println("I'm flying"); } }
Interface de l'adaptateur (interface Turquie) :
public interface Turkey { void gobble(); void fly(); }
Généralement implémenté par l'adaptateur (Turquie type) :
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"); } }
Adaptateur :
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(); } } }
Grâce à l'adaptateur dinde, on adapte une dinde en canard. Ce qu'il faut expliquer ici, c'est que le mode adaptateur et le mode décorateur décorent l'objet source pour obtenir un certain effet. Cependant, la différence entre le mode adaptateur et le mode décorateur est que le mode adaptateur adapte l'objet source pour qu'il soit utilisé. peut se conformer à une interface spécifique, et le modèle de décorateur est une extension de la fonctionnalité de l'objet source afin qu'il puisse faire plus de travail.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!