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.
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();
}
}
}
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();
}
}
Rollen, die das Fassadenmuster verwenden
package facade;
public class Main {
public static void main(String[] args) {
PageMaker.makeWelcomePage("[email protected]", "welcome.html");
}
}
https://github.com/aki0207/facade
Ich habe dies als Referenz verwendet. Augmented Revised Edition Einführung in in Java gelernte Entwurfsmuster
Recommended Posts