[JAVA] Entwurfsmuster ~ Fassade ~

1. Zuallererst

Hier ist eine Zusammenfassung des ** Fassadenmusters ** im GoF-Entwurfsmuster.

2. Wie ist das Fassadenmuster?

3. Beispielklassendiagramm

Facade.PNG

4. Beispielprogramm

Ein Programm, das die Webseite eines Benutzers erstellt.

4-1. PageMaker-Klasse

Eine Klasse, die die Webseite eines Benutzers aus einer E-Mail-Adresse erstellt. Diese Klasse wird Fassade.

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 + "Willkommen auf der Seite.");
			writer.paragraph("Sie haben eine E-Mail.");
			writer.mailto(mailaddr, username);
			writer.close();
			System.out.println(filename + " is created for " + mailaddr + " (" + username + ")");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

4-2. HtmlWriter-Klasse

Eine Klasse, die eine HTML-Datei erstellt.

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. Datenbankklasse

Diese Klasse erhält den Benutzernamen von der E-Mail-Adresse.

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. Maildata-Datenbank

Dies ist eine Datenbankdatei.

maildata.txt


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

4-5 Hauptklasse

Diese Klasse führt die Hauptverarbeitung durch.

Main.java


import pagemaker.PageMaker;

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

4-6 Ausführungsergebnis

f.PNG

5. Vorteile

Bei so vielen Klassen und Methoden müssen sich Programmierer fragen, welche sie verwenden sollen, und auf die Reihenfolge achten, in der sie aufgerufen werden. Vorsicht bedeutet, dass es leicht ist, einen Fehler zu machen. Mit dem Fassadenmuster können Sie ** die Anzahl der Schnittstellen reduzieren und komplexe Dinge einfach aussehen lassen **. Eine kleine Anzahl von Schnittstellen kann auch als lose Verbindung mit der Außenseite ausgedrückt werden. Mit anderen Worten, es wird eine lose Bindung und macht es einfach, die Verpackung als Teil wiederzuverwenden.

  1. GitHub

7. Liste der Entwurfsmuster

8. Referenz

Dieser Artikel und das Beispielprogramm wurden basierend auf den folgenden Büchern erstellt.

Es war sehr leicht zu verstehen und ich habe viel gelernt. Vielen Dank. Die detaillierten Erklärungen der Entwurfsmuster und Beispielprogramme sind geschrieben. Schauen Sie sich also auch die Bücher an.

Recommended Posts

Entwurfsmuster ~ Fassade ~
Fassadenmuster
Fassadenmuster
Entwurfsmuster ~ Besucher ~
Java-Entwurfsmuster
Entwurfsmuster ~ Proxy ~
Entwurfsmuster ~ Zustand ~
Entwurfsmuster ~ Strategie ~
Entwurfsmuster ~ Singleton ~
Entwurfsmuster ~ Composite ~
Entwurfsmuster (2): Builder
Entwurfsmuster (1): AbstractFactory
Entwurfsmuster ~ Befehl ~
Entwurfsmuster ~ Iterator ~
Entwurfsmuster ~ Brücke ~
Entwurfsmuster ~ Mediator ~
Entwurfsmuster ~ Dekorateur ~
Entwurfsmuster ~ Interpreter ~
Entwurfsmuster ~ Beobachter ~
Entwurfsmuster ~ Prototyp ~
Entwurfsmuster ~ Memento ~
Entwurfsmuster ~ Adapter ~
Entwurfsmuster ~ Fliegengewicht ~
C ++ - Entwurfsmuster (TemplateMethod-Muster)
Entwurfsmuster ~ Fabrikmethode ~
Entwurfsmuster ~ Abstrakte Fabrik ~
Zusammenfassung des GoF-Entwurfsmusters
Entwurfsmuster ~ Vorlagenmethode ~
Zusammenfassung des Java-Entwurfsmusters
Entwurfsmuster ~ Verantwortungskette ~
[Entwurfsmuster] Java-Kernbibliothek
Entwurfsmuster nach Ruby Template-Methode Musternotiz
C # gekautes Designmuster: TemplateMethod
Anwendungsbeispiel für Entwurfsmuster (Nr. 1)
Java-Anfänger-Entwurfsmuster (Factory-Methodenmuster)
Prototypmuster
Vermittlermuster
Iteratormuster
Zusammengesetztes Muster
Beobachtermuster
Builder-Muster
Brückenmuster
Befehlsmuster
Builder-Muster
Strategiemuster
Iteratormuster
Besuchermuster
Adaptermuster
Proxy-Muster
Strategiemuster
Zusammengesetztes Muster
Singleton-Muster
Singleton-Muster
Prototypmuster
[Entwurfsmuster] Allgemeine Logik mit der Vorlagenmethode
Wofür ist das Fassadenmuster nützlich?
Dekorationsmuster
Fliegengewichtsmuster
Dekorateur Muster
Vermittlermuster
Besuchermuster