[JAVA] Fassadenmuster

Was ist das Fassadenmuster?

Bereiten Sie ein "Fenster" für die Verarbeitung vor. Wenn das Programm wächst, werden mehr Klassen erstellt. Um diese Klassen zu verwenden, verstehen Sie die Beziehungen zwischen den Klassen und Sie müssen die Methoden in der richtigen Reihenfolge aufrufen. Im Fassadenmuster wird ein "Fenster" vorbereitet, und der Benutzer muss nur eine Anfrage an das "Fenster" stellen.

Die Rolle der Fassade (vorne)

Es wird ein einfaches Fenster für viele andere Rollen sein, aus denen das System besteht. Bereitstellung einer hochwertigen und einfachen Schnittstelle nach außen.

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 + "Willkommen auf der Seite.");
			writer.paragraph("Ich warte auf eine E-Mail.");
			writer.mailTo(mailAddress, userName);
			writer.close();
			System.out.println(fileName + " is created for " + mailAddress + " (" + userName + ")");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Viele andere Rollen, aus denen das System besteht

Ich mache jeden Job, bin mir aber der Rolle der Fassade nicht bewusst. Er wird von der Rolle der Fassade berufen, seine Arbeit zu erledigen, aber er nennt die Rolle der Fassade nicht von vielen anderen Rollen.

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();
	}
}

Die Rolle des Kunden

Rollen, die das Fassadenmuster verwenden

package facade;

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

HTML erstellt durch Ausführen

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

https://github.com/aki0207/facade

Ich habe dies als Referenz verwendet. Augmented Revised Edition Einführung in in Java gelernte Entwurfsmuster

Recommended Posts

Fassadenmuster
Entwurfsmuster ~ Fassade ~
Prototypmuster
Erinnerungsmuster
Vermittlermuster
Zusammengesetztes Muster
Beobachtermuster
Builder-Muster
Strategiemuster
Iteratormuster
Besuchermuster
Adaptermuster
Proxy-Muster
Strategiemuster
Zusammengesetztes Muster
Singleton-Muster
Singleton-Muster
Prototypmuster
Dekorationsmuster
Fliegengewichtsmuster
Dekorateur Muster
Vermittlermuster
Besuchermuster
Brückenmuster
Wofür ist das Fassadenmuster nützlich?
abstraktes Fabrikmuster
Entwurfsmuster ~ Builder ~
[Java] Strategiemuster
Entwurfsmuster ~ Besucher ~
Java-Entwurfsmuster
Java-Rückrufmuster
Entwurfsmuster ~ Proxy ~
Entwurfsmuster ~ Zustand ~
Factory Method Pattern
Entwurfsmuster ~ Strategie ~
Entwurfsmuster ~ Singleton ~
Entwurfsmuster (2): Builder
Entwurfsmuster (1): AbstractFactory
[Java] Singleton-Muster
Entwurfsmuster ~ Befehl ~
Abstraktes Fabrikmuster
Entwurfsmuster ~ Iterator ~
Was ist Fassade? ??
Entwurfsmuster ~ Brücke ~
Entwurfsmuster ~ Mediator ~
Muster der Vorlagenmethode
Entwurfsmuster ~ Dekorateur ~
Entwurfsmuster ~ Interpreter ~
Factory Method Muster
Entwurfsmuster ~ Beobachter ~
Entwurfsmuster ~ Prototyp ~
[Java] Adaptermuster
Entwurfsmuster ~ Memento ~
Entwurfsmuster ~ Adapter ~
Entwurfsmuster ~ Fliegengewicht ~
Java-Muster-Memo