크고 복잡한 클래스들을 처리하기 위한 창구
즉, 복잡하고 많은 인터페이스들을 하나의 통합된 인터페이스로 묶는 패턴
둘다 구조 패턴으로 거의 같은 방식으로 작동하지만 목적이 다르다
어댑터 패턴: 인터페이스를 다른 인터페이스로 변환시키기 위한 용도
퍼사드 패턴: 인터페이스를 단순화시키기 위한 용도
: 웹 페이지를 만드는 프로그램
Database class - 이메일 주소에서 사용자 이름을 얻는 클래스
Html Writer - Html 파일을 작성하는 클래스
PageMaker class - 이메일 주소로 사용자의 웹 페이지를 작성하는 클래스
public class Database {
private Database() {
}
public static Properties getProperties(String dbname) throws Exception {
String filename = dbname + ".txt";
Properties prop = new Properties();
prop.load(new FileReader(filename));
return prop;
}
}
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);
}
// html 닫기
public void close() throws IOException {
writer.write("</body>");
writer.write("</html>\n");
writer.close();
}
}
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 + "의 페이지에 오신 걸 환영합니다.");
writer.paragraph("메일을 기다리고 있습니다.");
writer.mailto(mailaddr, username);
writer.close();
System.out.println(filename + " is created for " + mailaddr + " (" + username + ")");
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class Main {
public static void main(String[] args) {
PageMaker.makeWelcomePage("wonseok@example.com", "hello.html");
}
}