[JAVA] Modèle de conception ~ Façade ~

1.Tout d'abord

Voici un résumé du ** modèle de façade ** dans le modèle de conception du GoF.

2. Quel est le motif de la façade?

3. Exemple de diagramme de classes

Facade.PNG

4. Exemple de programme

Un programme qui crée la page Web d'un utilisateur.

4-1. Classe PageMaker

Une classe qui crée la page Web d'un utilisateur à partir d'une adresse e-mail. Cette classe devient Façade.

PageMaker.java


package pagemaker;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

public class PageMaker {

	private PageMaker() {}

	public static void makeWelcomePage(String mailaddr, String filename) {
		try {
			Properties mailprop = Database.getProperties("maildata");
			String username = mailprop.getProperty(mailaddr);
			HtmlWriter writer = new HtmlWriter(new FileWriter(filename));
			writer.title("Welcome to " + username + "'s page!");
			writer.paragraph(username + "Bienvenue sur la page.");
			writer.paragraph("Tu as un email.");
			writer.mailto(mailaddr, username);
			writer.close();
			System.out.println(filename + " is created for " + mailaddr + " (" + username + ")");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

4-2. Classe HtmlWriter

Une classe qui crée un fichier HTML.

v.java


package pagemaker;

import java.io.IOException;
import java.io.Writer;

public class HtmlWriter {

	private Writer writer;

	public HtmlWriter(Writer writer) {
        this.writer = writer;
    }

	public void title(String title) throws IOException {
        writer.write("<html>");
        writer.write("<head>");
        writer.write("<title>" + title + "</title>");
        writer.write("</head>");
        writer.write("<body>\n");
        writer.write("<h1>" + title + "</h1>\n");
    }

	public void paragraph(String msg) throws IOException {
        writer.write("<p>" + msg + "</p>\n");
    }

	public void link(String href, String caption) throws IOException {
        paragraph("<a href=\"" + href + "\">" + caption + "</a>");
    }

	public void mailto(String mailaddr, String username) throws IOException {
        link("mailto:" + mailaddr, username);
    }

	public void close() throws IOException {
        writer.write("</body>");
        writer.write("</html>\n");
        writer.close();
    }
}

4-3. Classe de base de données

Cette classe obtient le nom d'utilisateur à partir de l'adresse e-mail.

Database.java


package pagemaker;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class Database {

	private Database() {}

	public static Properties getProperties(String dbname) {
		String filename = dbname + ".txt";
		Properties prop = new Properties();
		try {
			prop.load(new FileInputStream(filename));
		} catch (IOException e) {
			System.out.println("Warning: " + filename + " is not found.");
		}
		return prop;
	}
}

4-4. Base de données maildata

Ceci est un fichier de base de données.

maildata.txt


[email protected]=Taro Tanaka
[email protected]=Hanako Yamada
[email protected]=Daisuke Suzuki

4-5. Classe principale

Cette classe effectue le traitement principal.

Main.java


import pagemaker.PageMaker;

public class Main {
	public static void main(String[] args) {
		PageMaker.makeWelcomePage("[email protected]", "welcome.html");
	}
}

4-6. Résultat de l'exécution

f.PNG

5. Avantages

Avec autant de classes et de méthodes, les programmeurs doivent se demander laquelle utiliser et faire attention à l'ordre dans lequel ils sont appelés. Être prudent signifie qu'il est facile de se tromper. En utilisant le modèle Facade, vous pouvez ** réduire le nombre d'interfaces et simplifier les choses complexes **. Un petit nombre d'interfaces peut également être exprimé comme une connexion lâche avec l'extérieur. En d'autres termes, cela devient une liaison lâche et facilite la réutilisation de l'emballage en tant que pièce.

  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 ~ Façade ~
Modèle de façade
Motif de façade
Modèle de conception ~ Visiteur ~
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 ~ Pont ~
Modèle de conception ~ Médiateur ~
Modèle de conception ~ Décorateur ~
Modèle de conception ~ Interprète ~
Modèle de conception ~ Observateur ~
Modèle de conception ~ Prototype ~
Modèle de conception ~ Memento ~
Modèle de conception ~ Adaptateur ~
Modèle de conception ~ Poids mouche ~
Modèle de conception C ++ (modèle TemplateMethod)
Modèle de conception ~ Méthode d'usine ~
Modèle de conception ~ Usine abstraite ~
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 médiateur
Modèle d'itérateur
Motif composite
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 d'itérateur
Modèle de visiteur
Modèle d'adaptateur
Modèle de proxy
Modèle de stratégie
Motif composite
Motif singleton
Motif singleton
Modèle de prototype
[Modèle de conception] Logique commune avec la méthode de modèle
À quoi sert le modèle de façade?
Motif décorateur
Modèle de poids mouche
Motif décorateur
Modèle de médiateur
Modèle de visiteur