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!

Welcome to Hiroshi Yuki`s page!

null欢迎来到null的主页

等着你的邮件哦!

Hiroshi Yuki

// 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 协议 ,转载请注明出处!