Voici un résumé du ** modèle de façade ** dans le modèle de conception du GoF.
Un programme qui crée la page Web d'un utilisateur.
Une classe qui crée la page Web d'un utilisateur à partir d'une adresse e-mail. Cette classe devient Façade.
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 + "Bienvenue sur la page.");
writer.paragraph("Tu as un email.");
writer.mailto(mailaddr, username);
writer.close();
System.out.println(filename + " is created for " + mailaddr + " (" + username + ")");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Une classe qui crée un fichier HTML.
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();
}
}
Cette classe obtient le nom d'utilisateur à partir de l'adresse e-mail.
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;
}
}
Ceci est un fichier de base de données.
maildata.txt
[email protected]=Taro Tanaka
[email protected]=Hanako Yamada
[email protected]=Daisuke Suzuki
Cette classe effectue le traitement principal.
Main.java
import pagemaker.PageMaker;
public class Main {
public static void main(String[] args) {
PageMaker.makeWelcomePage("[email protected]", "welcome.html");
}
}
Avec autant de classes et de méthodes, les programmeurs doivent se demander laquelle utiliser et faire attention à l'ordre dans lequel ils sont appelés. Être prudent signifie qu'il est facile de se tromper. En utilisant le modèle Facade, vous pouvez ** réduire le nombre d'interfaces et simplifier les choses complexes **. Un petit nombre d'interfaces peut également être exprimé comme une connexion lâche avec l'extérieur. En d'autres termes, cela devient une liaison lâche et facilite la réutilisation de l'emballage en tant que pièce.
Cet article et exemple de programme ont été créés à partir des livres suivants.
C'était très facile à comprendre et j'ai beaucoup appris. Je vous remercie. Les explications détaillées des modèles de conception et des exemples de programmes sont écrites, veuillez donc également consulter les livres.
Recommended Posts