JavaFacade模式
本文最后更新于:1 年前
简单窗口
1- 从邮件地址中获取用户名的类
// 需要配置相应的数据库
public class Database {
private Database() { // 防止外部new出Database的实例,所以声明为private
}
public static Properties getProperties(String dbname){ // 根据数据库名获取Properties
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;
}
}
2 - 编写HTML文件的类
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>");
}
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>");
writer.close();
}
}
3 - 根据邮件地址编写该用户的Web页面
public class PageMaker {
private PageMaker() { // 防止外部new出PageMaker的实例,所以声明为private
}
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 + "欢迎来到" + userName + "的主页");
writer.paragraph("等着你的邮件哦!");
writer.mailto(mailAddr, userName);
writer.close();
System.out.println(filename + " is created for " + mailAddr + " (" +
userName + ")");
}catch (IOException e){
e.printStackTrace();
}
}
}
4 - 测试程序行为的类
public class Main {
public static void main(String[] args) {
PageMaker.makeWelcomePage("hyuki@hyuki.com", "welcome.html");
}
}
5 - 输出示例
Welcome to Hiroshi Yuki`s page!
null欢迎来到null的主页
等着你的邮件哦!
// HTML源码
<html><head><title>Welcome to Hiroshi Yuki`s page!</title>
</head>
<body>
<h1>Welcome to Hiroshi Yuki`s page!</h1>
<p>null欢迎来到null的主页</p>
<p>等着你的邮件哦!</p>
<p><a href="mailto: hyuki@hyuki.com">Hiroshi Yuki</a></p>
</body>
</html>
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!