[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 :
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 :
3. Exemple de fiche de boîtier de prise
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接口已连接,开始工作"); } }
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
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.
5. Résumé
6. Principes de conception OO
• Programmation orientée interface (programmation orientée abstraction)
• Modifications d'encapsulation
•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.