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