Design Patterns (7) - mode adaptateur

Adaptateur Mode (adaptateur), l'interface d'une classe, est convertie en une autre interface aux attentes des clients. Adaptateur pour que l'interface d' origine n'est pas compatible avec la classe peut collaborer de façon transparente. Ce mode permet aux clients de découpler de l'interface, si à un moment donné , nous voulons changer l'interface, l'adaptateur peut être changé une partie de l'ensemble, les clients ne doivent pas traiter avec des interfaces différentes et chaque modification suivent.

La photo montre la classe de mode adaptateur

Immédiatement après un exemple spécifique sera décrit

Nous avons un canard d'interface

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

Il y a aussi une interface de dinde

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

Supposons maintenant que nous manque canard objets, la Turquie voudrait utiliser une partie des objets à usurper l'identité. De toute évidence, en raison des différentes interfaces dinde, donc nous ne pouvons pas utiliser ouvertement. Cela nécessite un adaptateur d'écriture

import java.util.Random;

public class DuckAdapter implements Turkey {//让鸭子看起来像火鸡
	Duck duck;
	Random rand;
 
	public DuckAdapter(Duck duck) {
		this.duck = duck;
		rand = new Random();
	}
    
	public void gobble() {
		duck.quack();
	}
  
	/* 虽然两个接口都具备fly()方法,但火鸡飞行距离很短,不像鸭子可以长途飞行。 要让鸭子的飞行和火鸡的飞行能够对应,必须连续五次调用火鸡的fly()来完成。 */
	public void fly() {
		if (rand.nextInt(5)  == 0) {
		     duck.fly();
		}
	}
}

Adapter modèle est plein de principes de bonne conception OO: composition d'objet pour modifier le package d'interface est en meilleure forme: Cette approche a l'avantage supplémentaire qui est adapté toute sous-classe peut être utilisé avec l'adaptateur. En outre, ce modèle se lie au client et interfaces ensemble, plutôt que de se lier et de se rendre compte que l'on peut utiliser plusieurs adaptateurs, dont chacun est responsable de la conversion du fond de la classe des groupes différents. Vous pouvez également ajouter de nouvelles implémentations, tant qu'ils sont conformes aux objectifs interfaces peuvent être.

En fait, un total de « deux types » adaptateur: Adaptateur objet et adaptateur de classe , décrit précédemment est un adaptateur d'objet, l'adaptateur de la classe, vous avez besoin d' héritage multiple pour y parvenir, et la classe Java ne prend pas en charge l' héritage multiple, donc nous ne sommes pas payer plus description donnée ici que l' adaptateur diagramme de classe de classe:

Publié 295 articles originaux · louange gagné 37 · vues 30000 +

Je suppose que tu aimes

Origine blog.csdn.net/tianshan2010/article/details/104713988
conseillé
Classement