[JAVA] Motif de façade

Quel est le motif de la façade?

Préparez une «fenêtre» pour le traitement. Au fur et à mesure que le programme se développe, plus de classes sont créées. Pour utiliser ces classes, comprenez les relations entre les classes et Vous devez appeler les méthodes dans le bon ordre. Dans le modèle Façade, une "fenêtre" est préparée, et l'utilisateur n'a qu'à faire une demande à la "fenêtre".

Le rôle de Facade (avant)

Ce sera une simple fenêtre pour de nombreux autres rôles qui composent le système. Fournir une interface simple et de haut niveau vers l'extérieur.

package facade;

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

public class PageMaker {
	private PageMaker() {
	}

	public static void makeWelcomePage(String mailAddress, String fileName) {
		try {
			Properties mailProp = Database.getProperties("mailData");
			String userName = mailProp.getProperty(mailAddress);
			HtmlWriter writer = new HtmlWriter(new FileWriter(fileName));
			writer.title("Welcome to " + userName + "'s page!");
			writer.paragraph(userName + "Bienvenue sur la page.");
			writer.paragraph("J'attends un e-mail.");
			writer.mailTo(mailAddress, userName);
			writer.close();
			System.out.println(fileName + " is created for " + mailAddress + " (" + userName + ")");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

De nombreux autres rôles qui composent le système

Je fais chaque travail, mais je ne connais pas le rôle de Facade. Il est appelé par le rôle de Facade pour faire son travail, mais il n'appelle pas le rôle de Facade de nombreux autres rôles.

package facade;

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;
	}
}
package facade;

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 mailAddress, String userName) throws IOException {
		link("mailTo:" + mailAddress, userName);
	}

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

Le rôle du client

Rôles utilisant le modèle de façade

package facade;

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

HTML créé en exécutant

スクリーンショット 2020-09-18 14.59.53.png

https://github.com/aki0207/facade

Je l'ai utilisé comme référence. Édition révisée augmentée Introduction aux modèles de conception appris en langage Java

Recommended Posts

Motif de façade
Modèle de conception ~ Façade ~
Modèle de prototype
Motif de souvenir
Motif médiateur
Motif composite
Modèle d'observateur
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
Motif décorateur
Modèle de poids mouche
Motif décorateur
Modèle de médiateur
Modèle de visiteur
Modèle de pont
À quoi sert le modèle de façade?
modèle d'usine abstrait
Modèle de conception ~ Constructeur ~
[Java] Modèle de stratégie
Modèle de conception ~ Visiteur ~
Modèle de conception Java
modèle de rappel java
Modèle de conception ~ Proxy ~
Modèle de conception ~ État ~
Modèle de méthode d'usine
Modèle de conception ~ Stratégie ~
Modèle de conception ~ Singleton ~
Modèle de conception (2): constructeur
Modèle de conception (1): AbstractFactory
[Java] Motif singleton
Modèle de conception ~ Commande ~
Modèle d'usine abstraite
Modèle de conception ~ Itérateur ~
Qu'est-ce que la façade? ??
Modèle de conception ~ Pont ~
Modèle de conception ~ Médiateur ~
Modèle de méthode de modèle
Modèle de conception ~ Décorateur ~
Modèle de conception ~ Interprète ~
Modèle de méthode d'usine
Modèle de conception ~ Observateur ~
Modèle de conception ~ Prototype ~
[Java] Modèle d'adaptateur
Modèle de conception ~ Memento ~
Modèle de conception ~ Adaptateur ~
Modèle de conception ~ Poids mouche ~
Mémo de modèle Java