Hier ist eine Zusammenfassung des ** Fassadenmusters ** im GoF-Entwurfsmuster.
Ein Programm, das die Webseite eines Benutzers erstellt.
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();
}
}
}
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();
}
}
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;
}
}
Dies ist eine Datenbankdatei.
maildata.txt
[email protected]=Taro Tanaka
[email protected]=Hanako Yamada
[email protected]=Daisuke Suzuki
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");
}
}
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.
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