Presentation is loading. Please wait.

Presentation is loading. Please wait.

Builder Pattern S. Yukita Builder Pattern2 Builder パターン 使われ所 大きなインスタンスを組み上げる場合。 インスタンスの組み上げにパターンが あるとき,パターンをディレクタに固 定する。 組み上げパターンに従って実際の仕事.

Similar presentations


Presentation on theme: "Builder Pattern S. Yukita Builder Pattern2 Builder パターン 使われ所 大きなインスタンスを組み上げる場合。 インスタンスの組み上げにパターンが あるとき,パターンをディレクタに固 定する。 組み上げパターンに従って実際の仕事."— Presentation transcript:

1 Builder Pattern S. Yukita yukita@k.hosei.ac.jp

2 Builder Pattern2 Builder パターン 使われ所 大きなインスタンスを組み上げる場合。 インスタンスの組み上げにパターンが あるとき,パターンをディレクタに固 定する。 組み上げパターンに従って実際の仕事 をするのは Builder インタフェース(抽 象クラス)を実装(具象化)するクラ ス。

3 Builder Pattern3 例題のクラス図例題のクラス図 Main Director builder construct Builder makeTitle makeString makeItems getResult TextBuilder makeTitle makeString makeItems getResult HTMLBuilder makeTitle makeString makeItems getResult uses

4 Builder Pattern4 Builder.java public abstract class Builder { public abstract void makeTitle(String title); public abstract void makeString(String str); public abstract void makeItems(String[] items); public abstract Object getResult(); }

5 Builder Pattern5 TextBuilder.java (1) public class TextBuilder extends Builder { private StringBuffer buffer = new StringBuffer(); public void makeTitle(String title) { buffer.append("==============================\n"); buffer.append(" 『 " + title + " 』 \n"); buffer.append("\n"); }

6 Builder Pattern6 TextBuilder.java (2) public void makeString(String str) { buffer.append(' ■ ' + str + "\n"); buffer.append("\n"); }

7 Builder Pattern7 TextBuilder.java (3) public void makeItems(String[] items) { for (int i = 0; i < items.length; i++) { buffer.append(" ・ " + items[i] + "\n"); } buffer.append("\n"); }

8 Builder Pattern8 TextBuilder.java (4) public Object getResult() { buffer.append("==============================\n"); return buffer.toString(); }

9 Builder Pattern9 HTMLBuilder.java (1) import java.io.*; public class HTMLBuilder extends Builder { private String filename; private PrintWriter writer;

10 Builder Pattern10 HTMLBuilder.java (2) public void makeTitle(String title) { filename = title + ".html"; try { writer = new PrintWriter(new FileWriter(filename)); } catch (IOException e) { e.printStackTrace(); } writer.println( " " + title + " "); writer.println(" " + title + " "); }

11 Builder Pattern11 HTMLBuilder.java (3) public void makeString(String str) { writer.println(" " + str + " "); } public void makeItems(String[] items) { writer.println(" "); for (int i = 0; i < items.length; i++) { writer.println(" " + items[i] + " "); } writer.println(" "); }

12 Builder Pattern12 HTMLBuilder.java (4) public Object getResult() { writer.println(" "); writer.close(); return filename; }

13 Builder Pattern13 Director.java (1) public class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; }

14 Builder Pattern14 Director.java (2) public Object construct() { builder.makeTitle("Greeting"); builder.makeString(" 朝から昼にかけて "); builder.makeItems(new String[]{ " おはようございます。 ", " こんにちは。 " }); builder.makeString(" 夜に "); builder.makeItems(new String[]{ " こんばんは。 ", " おやすみなさい。 ", " さようなら。 " }); return builder.getResult(); }

15 Builder Pattern15 Main.java (1) public class Main { public static void main(String[] args) { if (args.length != 1) { usage(); System.exit(0); }

16 Builder Pattern16 Main.java (2) if (args[0].equals("plain")) { Director director = new Director( new TextBuilder()); String result = (String)director.construct(); System.out.println(result); } else if (args[0].equals("html")) { Director director = new Director( new HTMLBuilder()); String filename = (String)director.construct(); System.out.println(filename + " が作成されました。 "); } else { usage(); System.exit(0); } }

17 Builder Pattern17 Main.java (3) public static void usage() { System.out.println( "Usage: java Main plain プレーンテキストで文書作成 "); System.out.println( "Usage: java Main html HTML ファイルで文書作成 "); }

18 Builder Pattern18 実行結果 (plain) java Main plain ================================= [Greeting] ■ 朝から昼にかけて ・おはようございます。 ・こんにちは。 ■ 夜に ・こんばんは。 ・おやすみなさい。 ・さようなら。 =================================

19 Builder Pattern19 実行結果 (HTML) java Main html Greeting.html が作成されました。 Greeting 朝から昼にかけて おはようございます。 こんにちは。 夜にかけて こんばんは。 おやすみなさい。 さようなら。

20 Builder Pattern20 パターン Client Director builder construct Builder buildPart1 buildPart2 buildPart3 getResult ConcreteBuilder buildPart1 buildPart2 buildPart3 getResult uses

21 Builder Pattern21 Sequence 図 :Client:Director:ConcreteBuilder construct buildPart1


Download ppt "Builder Pattern S. Yukita Builder Pattern2 Builder パターン 使われ所 大きなインスタンスを組み上げる場合。 インスタンスの組み上げにパターンが あるとき,パターンをディレクタに固 定する。 組み上げパターンに従って実際の仕事."

Similar presentations


Ads by Google