Upgrade to Pro — share decks privately, control downloads, hide ads and more …

デザインパターン勉強会(Facade&Mediator)

 デザインパターン勉強会(Facade&Mediator)

Java女子部

November 29, 2022
Tweet

More Decks by Java女子部

Other Decks in Programming

Transcript

  1. 実際にFacadeやってみた Mainクラス import pagemaker.PageMaker; public class Main { public static

    void main(String[] args) { PageMaker.makeWelcomePage("Aya", "welcome.html"); } }
  2. 実際にFacadeやってみた public class PageMaker { private PageMaker() { } public

    static void makeWelcomePage(String name, String filename) { try { Properties foodprop = Database.getProperties("food"); String food = foodprop.getProperty(name); HtmlWriter writer = new HtmlWriter(new FileWriter(filename)); writer.title(name + "'s web page"); writer.paragraph("Welcome to " + name + "'s web page!"); writer.paragraph("好きな食べ物は" + food); writer.close(); System.out.println(filename + " is created for " + name + " (" + food + ")"); } catch (IOException e) { e.printStackTrace(); } } } 名前でDBからデータを 取得して、webページ を作成するクラス
  3. 実際にFacadeやってみた public class Database { private Database() { } public

    static Properties getProperties(String dbname) throws IOException { String filename = dbname + ".txt"; Properties prop = new Properties(); prop.load(new FileReader(filename)); return prop; } } 名前から好きな食べ物を取得するためのDBクラス
  4. 実際にFacadeやってみた public class HtmlWriter { private Writer writer; public HtmlWriter(Writer

    writer) { this.writer = writer; } public void title(String name) throws IOException { writer.write("<!DOCTYPE html>"); writer.write("<html>"); writer.write("<head>"); writer.write("<title>" + name + "</title>"); writer.write("</head>"); writer.write("<body>"); writer.write("\n"); writer.write("<h1>" + name + "</h1>"); writer.write("\n"); } public void paragraph(String msg) throws IOException { writer.write("<p>" + msg + "</p>"); writer.write("\n"); } public void link(String food) throws IOException { paragraph(food); } public void close() throws IOException { writer.write("</body>"); writer.write("</html>"); writer.write("\n"); writer.close(); } } HTMLファイルを作成するクラス
  5. 実際にFacadeやってみた <!DOCTYPE html><html><head><title>Aya's web page</title></head><body> <h1>Aya's web page</h1> <p>Welcome to

    Aya's web page!</p> <p>好きな食べ物はRamen Jiro</p> </body></html> 生成されたHTML
  6. Mediator 簡易的なクラス図(サンプルソース) LoginFrame Button TextField CheckBox ボタンの 有効/無効を指示 Colleague テキストが入力され

    てるかどうか通知する どちらがチェック されてるか通知する テキストの 有効/無効を指示