Maison > Java > javaDidacticiel > le corps du texte

Première introduction au modèle de conception JavaModèle d'adaptateur

高洛峰
Libérer: 2017-01-19 16:12:38
original
1526 Les gens l'ont consulté

[Texte]

Nous savons que le contrôle d'interface utilisateur le plus important et le plus difficile à utiliser dans Android est le contrôle de liste ListView, et si vous souhaitez l'utiliser de manière flexible, vous devez utiliser un adaptateur, donc, je pense qu'il est toujours nécessaire d'apprendre le modèle d'adaptateur en Java (qu'il puisse être utilisé ou non à l'avenir). Après tout, le langage Java est une base importante pour le développement d'Android.

Comprendre parfaitement le modèle d'adaptateur, il y a beaucoup de connaissances à apprendre, par exemple : le modèle d'adaptateur a deux formes différentes : le modèle d'adaptateur de classe et le modèle d'adaptateur d'objet. Mais en tant que débutant, j'apprendrai simplement les connaissances introductives du mode orchestration, et je continuerai à l'améliorer à l'avenir. J'espère que les chaussures pour enfants qui ont du mal sur le chemin du codage ne se plaindront pas →_→

1. Introduction de l'adaptateur

•Convertir l'interface d'une classe en une autre interface que le le client veut. Le modèle Adapter permet à des classes de travailler ensemble qui autrement ne fonctionneraient pas ensemble en raison d'interfaces incompatibles.
•Le modèle d'adaptateur est très couramment utilisé dans les frameworks Java modernes. Ce mode convient aux scénarios suivants : vous souhaitez utiliser une classe existante, mais la classe ne répond pas aux exigences de l'interface ou vous devez créer une classe réutilisable qui s'adapte à d'autres classes qui ne fournissent pas d'interface adaptée ;

2. Exemple de pommes et d'oranges

L'idée d'un adaptateur peut être illustrée par l'exemple simple suivant. Cet exemple veut qu'une orange soit « insérée » dans une pomme. Comme le montre la figure ci-dessous :

Première introduction au modèle de conception JavaModèle dadaptateur

Comme vous pouvez le voir dans la moitié inférieure de la figure ci-dessus, l'adaptateur contient une instance Orange et hérite de la classe Apple. L'objet orange est placé dans l'adaptateur, l'orange se comporte donc comme une pomme. Le schéma logique correspondant est le suivant :

Première introduction au modèle de conception JavaModèle dadaptateur

3. Exemple de fiche de boîtier de prise

Première introduction au modèle de conception JavaModèle dadaptateur

Dans la figure ci-dessus, on peut passer L'adaptateur au milieu permet à la fiche de droite de se connecter avec succès à la prise de gauche.

4. Implémentation du code de l'adaptateur de prise

/**
  适配器模式( Adapter ):将一个类的接口转换成客户希望的另外一个接口。
  适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
*/
class AdapterDemo{
  public static void main(String[] args){
    //电源A开始工作
    PowerA powerA = new PowerAImpl();
    start(powerA);
    PowerB powerB = new PowerBImpl();
    PowerAAdapter pa = new PowerAAdapter(powerB);
    start(pa);
  }
  //定义方法:电源A工作
  public static void start(PowerA powerA){
    System.out.println("....一些重复的代码.....");
    powerA.insert();
    System.out.println("....一些重复的代码.....\n");
  }
 
  /**
  public static void start(PowerB powerB){
    System.out.println("....一些重复的代码.....");
    powerB.connect();
    System.out.println("....一些重复的代码.....");
  }
  */
}
//定义适配器类
class PowerAAdapter implements PowerA{
  private PowerB powerB;//要进行适配的接口
   
  public PowerAAdapter(PowerB powerB){
    this.powerB = powerB;
  }
  //实现接口PowerA,则必然要实现PowerA里面的方法
  public void insert(){
    powerB.connect();
  }
}
/**
  电源A接口
*/
interface PowerA{
  public void insert();
}
class PowerAImpl implements PowerA{
  public void insert(){
    System.out.println("电源A接口插入,开始工作");
  }
}
/**
  电源B接口
*/
interface PowerB{
  public void connect();
}
class PowerBImpl implements PowerB{
  public void connect(){
    System.out.println("电源B接口已连接,开始工作");
  }
}
Copier après la connexion

Dans cet exemple, nous voulons que PowerB appelle le code dans la méthode Start() dans PowerA ; Je ne veux pas répéter les 23 et 25 lignes de code commentées. À ce stade, vous pouvez utiliser le mode adaptateur.

Explication du code ci-dessus :

Ligne 30 : Commencez à définir l'adaptateur, qui est également le début du code principal

Lignes 33 et 34 : Passer PowerB via la méthode de construction ;


Ligne 37 : Puisque l'interface PowerA est implémentée, la méthode insert() dans PowerA doit être implémentée ;

Ligne 38 du code : Nous appelons la méthode connect() de PowerB dans la méthode insert() de PowerA

Ensuite, les lignes 10, 11 et 12 du code signifient : dans new When a PowerB ; est généré, nous le transmettons à l'adaptateur PowerAAdapter, démarrons l'adaptateur, puis PowerB exécutera le code aux lignes 16, 24 et 18.

Remarque : L'ordre de 16, 24 et 18 n'est pas faux, car nous avons remplacé la 24ème ligne de code par la 17ème ligne de code dans l'adaptateur.

L'effet de fonctionnement est le suivant :

De même, si je souhaite également utiliser PowerA comme PowerB, je peux définir un autre adaptateur PowerBAdapter pour réaliser un adaptateur bidirectionnel. Première introduction au modèle de conception JavaModèle dadaptateur

5. Résumé

Le code commenté aux lignes 23 et 25 ci-dessus indique beaucoup de code répété, ce qui n'est pas conforme à la façon de penser orientée objet. Imaginons maintenant un exemple : notre projet a été en ligne et est utilisé par des clients, mais de nouvelles exigences ont ensuite été ajoutées. Il existe un principe OO pour l'orienté objet : proche de la modification (essayez de ne pas modifier le code après sa mise en ligne, sinon une réaction en chaîne pourrait se produire, provoquant des problèmes dans d'autres codes qui appellent la méthode ici), et ouvert à l'extension (nouveau code défini par vous-même) La méthode n'a pas été appelée par d'autres, nous pouvons bien sûr la modifier). À ce stade, nous pouvons réduire ces codes répétés grâce à des adaptateurs.

6. Principes de conception OO

• Programmation orientée interface (programmation orientée abstraction)
• Modifications d'encapsulation

• Utiliser plus de combinaison et moins d'héritage

•Fermé aux modifications et ouvert aux extensions


Personnellement, ces principes de conception nécessitent une compréhension plus approfondie dans la pratique, je ne les décrirai donc pas trop ici~

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour plus d'articles liés au modèle d'adaptateur de modèle de conception Java, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal