Design Pattern - Facade
1. 클래스다이어그램
2. Source

1. 클래스다이어그램

- maildata.txt
a1@dazzilove.com=Kim
a2@dazzilove.com=Lee
a3@dazzilove.com=Kang
a4@dazzilove.com=Pak - Database.java
package com.dazzilove.facade.sample1.pagemaker;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class Database {
private Database() {
//new로 인스턴스를 생성시키지 않기 위해 private 선언
}
//데이터베이스명으로부터 Properties를 얻는다.
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;
}
} - HtmlWriter.java
package com.dazzilove.facade.sample1.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 {
StringBuilder sb = new StringBuilder();
sb.append("<html>");
sb.append("<head>");
sb.append("<title>");
sb.append(title);
sb.append("</title>");
sb.append("</head>");
sb.append("<body>");
sb.append("<h1>");
sb.append(title);
sb.append("</h1>");
writer.write(sb.toString());
}
public void paragraph(String msg) throws IOException {
writer.write("<p>" + msg + "</p>");
}
public void link(String href, String caption) throws IOException {
paragraph("<a href=\"" + href + "\">" + caption + "</a>");
}
public void mailTo(String mailAddr, String userNmae) throws IOException {
link("mailto:" + mailAddr, userNmae);
}
public void close() throws IOException {
StringBuilder sb = new StringBuilder();
sb.append("</body>");
sb.append("</html>");
writer.write(sb.toString());
writer.close();
}
} - PageMaker.java
package com.dazzilove.facade.sample1.pagemaker;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class PageMaker {
private PageMaker() {
//인스턴스는 만들지 않기 때문에 private 선언한다.
}
public static void makeWelcomePage(String mailAddr, String fileName) {
try {
Properties mailProp = Database.getProperties("D:\\dazzilove\\workspace\\DesignPatternStudy\\bin\\com\\dazzilove\\facade\\sample1\\maildata");
String userName = mailProp.getProperty(mailAddr);
HtmlWriter writer = new HtmlWriter(new FileWriter(fileName));
writer.title("Welcome to " + userName + "'s page!");
writer.paragraph(userName + "의 페이지에 오신걸 환경합니다.");
writer.paragraph("메일이 기다리고 있겠습니다.");
writer.mailTo(mailAddr, userName);
writer.close();
System.out.println(fileName + " is created for " + mailAddr + "(" + userName + ")");
} catch(IOException e) {
e.printStackTrace();
}
}
} - Main.java
package com.dazzilove.facade.sample1;
import com.dazzilove.facade.sample1.pagemaker.PageMaker;
public class Main {
public static void main(String[] args) {
PageMaker.makeWelcomePage("a1@dazzilove.com", "a1Welcome.html");
PageMaker.makeWelcomePage("a2@dazzilove.com", "a2Welcome.html");
PageMaker.makeWelcomePage("a3@dazzilove.com", "a3Welcome.html");
PageMaker.makeWelcomePage("a4@dazzilove.com", "a4Welcome.html");
}
}





덧글