[JAVA] Modèle de conception ~ Adaptateur ~

1.Tout d'abord

Voici un résumé du ** modèle d'adaptateur ** dans le modèle de conception GoF.

2. Quel est le modèle de l'adaptateur?

3. Exemple de diagramme de classes

3-1. ~ Méthode utilisant l'héritage ~

Adapter.PNG

3-2. ~ Méthode utilisant la délégation ~

Adapter2.PNG

4. Exemple de programme

Un programme qui affiche les noms et âges des élèves.

4-1. ~ Méthode utilisant l'héritage ~

4-1-1. Classe humaine

Il s'agit de la classe fournie à l'origine.

Human.java


public class Human {

	private String name;
	private int age;

	public Human(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public void printName() {
		System.out.println(name);
	}

	public void printAge() {
		System.out.println(age);
	}
}

4-1-2. Interface étudiant

L'interface requise.

Student.java


public interface Student {
	public abstract void showName();
	public abstract void showAge();
}

4-1-3. Classe HumanAdapter

Cette classe sert d'adaptateur.

HumanAdapter.java


public class HumanAdapter extends Human implements Student {

	public HumanAdapter(String name, int age) {
		super(name, age);
	}

	public void showName() {
		printName();
	}

	public void showAge() {
		printAge();
	}
}

4-1-4. Classe principale

Cette classe effectue le traitement principal.

Main.java


public class Main {
	public static void main(String[] args) {
		Student student = new HumanAdapter("Tanaka", 25);
		student.showName();
		student.showAge();
	}
}

4-1-5. Résultat de l'exécution

Tanaka
25

4-2. ~ Méthode utilisant la délégation ~

4-2-1. Classe humaine

Il s'agit de la classe fournie à l'origine.

Human.java


public class Human {

	private String name;
	private int age;

	public Human(String name, int age) {
        this.name = name;
        this.age = age;
	}

	public void printName() {
        System.out.println(name);
    }

	public void printAge() {
        System.out.println(age);
    }
}

4-2-2. Interface étudiant

L'interface requise.

Student.java


public interface Student {
    public abstract void showName();
    public abstract void showAge();
}

4-2-3. Classe HumanAdapter

Cette classe sert d'adaptateur.

HumanAdapter.java


public class HumanAdapter implements Student {

	private Human human;

	public HumanAdapter(String name, int age) {
		this.human = new Human("Tanaka", 25);;
    }

	public void showName() {
		human.printName();
    }

	public void showAge() {
		human.printAge();
    }
}

4-2-4. Classe principale

Cette classe effectue le traitement principal.

Main.java


public class Main {
    public static void main(String[] args) {
    	Student student = new HumanAdapter("Tanaka", 25);
    	student.showName();
    	student.showAge();
    }
}

4-2-5. Résultat de l'exécution

Tanaka
25

5. Avantages

Le modèle Adapter couvre la classe existante et crée la classe requise. Ce modèle vous permet de créer rapidement les méthodes dont vous avez besoin. Même si un bogue est détecté, si la classe existante est bien testée, vous pouvez vous concentrer sur la classe qui joue le rôle d'Adaptateur, ce qui facilite la vérification du programme. En outre, le modèle d'adaptateur vous permet d'implémenter des fonctionnalités sans modifier les classes existantes, ce qui réduit les tracas de tester à nouveau les classes existantes.

  1. GitHub

7. Liste des modèles de conception

8. Référence

Cet article et exemple de programme ont été créés à partir des livres suivants.

C'était très facile à comprendre et j'ai beaucoup appris. Je vous remercie. Les explications détaillées des modèles de conception et des exemples de programmes sont écrites, veuillez donc également consulter les livres.

Recommended Posts

Modèle de conception ~ Adaptateur ~
Modèle d'adaptateur
Modèle de conception ~ Constructeur ~
Modèle de conception Java
Modèle de conception ~ Proxy ~
Modèle de conception ~ État ~
Modèle de conception ~ Stratégie ~
Modèle de conception ~ Singleton ~
Modèle de conception ~ Composite ~
Modèle de conception (2): constructeur
Modèle de conception (1): AbstractFactory
Modèle de conception ~ Commande ~
Modèle de conception ~ Itérateur ~
Modèle de conception ~ Façade ~
Modèle de conception ~ Pont ~
Modèle de conception ~ Médiateur ~
Modèle de conception ~ Décorateur ~
Modèle de conception ~ Interprète ~
Modèle de conception ~ Observateur ~
[Java] Modèle d'adaptateur
Modèle de conception ~ Memento ~
Modèle de conception ~ Poids mouche ~
Modèle de conception C ++ (modèle TemplateMethod)
Modèle de conception ~ Méthode d'usine ~
Résumé du modèle de conception du GoF
Modèle de conception ~ Méthode de modèle ~
Résumé du modèle de conception Java
Modèle de conception ~ Chaîne de responsabilité ~
[Design pattern] Bibliothèque de base Java
Modèle de conception par la méthode Ruby Template Mémo de modèle
Modèle de conception mâché C #: TemplateMethod
Exemple d'application du modèle de conception (n ° 1)
Modèle de conception Java pour débutant (modèle de méthode d'usine)
Modèle de prototype
Motif de souvenir
Modèle d'itérateur
Modèle d'observateur
Modèle de constructeur
Modèle de pont
Modèle de commande
Modèle de constructeur
Modèle de stratégie
Modèle de visiteur
Modèle de proxy
Modèle de stratégie
Motif composite
Motif singleton
Modèle de prototype
[Modèle de conception] Logique commune avec la méthode de modèle
Modèle de façade
Motif décorateur
Modèle de poids mouche
Motif décorateur
Modèle de médiateur
Motif de façade
Modèle de visiteur
Modèle de pont
PrintObserver "Modèle de conception d'observateur: description et exemple d'implémentation"
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle de commande -