** Table des matières **
Convertissez une interface d'une classe en une autre que le client souhaite. Le modèle d'adaptateur vous permet de combiner des classes incompatibles les unes avec les autres dans l'interface.
-Target Définit l'interface de la classe après la combinaison. ・ Classe d'utilisateur client ・ Classe Adaptee que vous souhaitez combiner -Classe créée en combinant la classe Adapter Adaptee
Quand j'ai lu le but et j'ai pensé: «Je peux faire ça», c'était comme si une classe hérite de plusieurs classes et assemble plusieurs classes. L'exemple de code du livre GoF est essentiellement écrit en C ++, il semble donc qu'il ne puisse pas être réalisé avec kotlin (Java d'origine). Même s'il s'agit du premier motif lié à la structure.
Après de nombreuses recherches, certaines pages ont réalisé (ou essayez-vous de) le modèle d'adaptateur en java.
is-une relation
Ouhas-une relation
Cela peut être réalisé par deux choses. Il a été écrit sur chaque page, mais est-ce vraiment un modèle d'adaptateur ...? Je pense.
Par exemple, la classe TextView`
, la classe Rect '' et la
classe ColorBackground` `` sont incluses dans la boîte à outils standard, mais le système à créer a maintenant des coins arrondis. Je reconnais que ce modèle est utilisé lorsque vous avez besoin d'une vue de texte qui peut changer la couleur d'arrière-plan !!!
Si cela peut être réalisé avec java, la classe suivante peut être créée.
ColorRectTextView.java
public class ColorRectTextView extends TextView, Rect, ColorBackground {
//Méthode pour arrondir les coins et changer la couleur d'arrière-plan
}
Cependant, java n'autorise pas l'héritage multiple. Quand ceci est réalisé par "est-une relation" "ou" a-une relation ""
IsAColorRectTextView.java
public class IsAColorRectTextView extends TextView implements RectInterface, ColorBackgroundInterface {
//Implémentez les méthodes définies par RectInterface et ColorBackgroundInterface
}
Forme comme
HasAColorRectTextView.java
public class HasAColorRectTextView extends TextView {
private Rect rect;
private ColorBackground colorBackGround;
public HasAColorRectTextView(Rect rect, ColorBackground colorBackGround) {
this.rect = rect;
this.colorBackGround = colorBackGround;
}
public void rectMethod() {
rect.rectMethod()
}
public void colorBackGroundMethod() {
colorBackGround.colorBackGroundMethod()
}
}
Cela ressemble à un simple héritage et délégation.
Recommended Posts