Template Method パターン
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/10/19 20:02 UTC 版)
Template Method パターン(テンプレート・メソッド・パターン)とは、GoF (Gang of Four; 4人組) によって定義されたデザインパターンの1つである。「振る舞いに関するパターン」に属する。Template Method パターンの目的は、ある処理のおおまかなアルゴリズムをあらかじめ決めておいて、そのアルゴリズムの具体的な設計をサブクラスに任せることである。そのため、システムのフレームワークを構築するための手段としてよく活用される。
クラス図
以下に Template Method パターンのクラス図を挙げる。
AbstractClass
で定義されている抽象メソッドの可視性が protected (#) なのは、このメソッドが AbstractClass.templateMethod()
内でのみ使用されることを想定しているからである。
利用例
以下にTemplate Method パターンを使って文字列型配列を書式化してリストアップするJavaプログラムの例を示す。
abstract class StringLister {
protected abstract String formatHeader();
protected abstract String formatItem(String item);
protected abstract String formatFooter();
public final String display(String[] items) {
StringBuilder result = new StringBuilder(this.formatHeader());
for (String item : items) {
result.append(this.formatItem(item));
}
result.append(this.formatFooter());
return result.toString();
}
}
class PlainTextStringLister extends StringLister {
protected String formatHeader() {
return "";
}
protected String formatItem(String item) {
return " - " + item + "\r\n";
}
protected String formatFooter() {
return "";
}
}
class HtmlStringLister extends StringLister {
protected String formatHeader() {
return "<ul>\r\n";
}
protected String formatItem(String item) {
return " <li>" + item + "</li>\r\n";
}
protected String formatFooter() {
return "<ul>\r\n";
}
}
public class TemplateMethodTest {
public static void main(String[] argv) {
String[] items = {"First", "Second", "Third"};
StringLister l1 = new PlainTextStringLister();
StringLister l2 = new HtmlStringLister();
System.out.println(l1.display(items));
System.out.println(l2.display(items));
}
}
このサンプルを実行すると、次の実行結果が得られる。最初の3行が PlainTextStringLister.display()
の返り値で、空行を挟んでその後にある出力が HtmlStringLister.display()
の返り値である。
- First
- Second
- Third
<ul>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
参考までに、クラス図との対応関係を示す。
- AbstractClass
-
StringLister
- AbstractClass.templateMethod()
-
StringLister.display()
- ConcreteClass
-
PlainTextStringLister
,HtmlStringLister
関係するパターン
Factory Method パターンは、内部に Template Method パターンを包含することが多い。
関連項目
脚注
「Template Method パターン」の例文・使い方・用例・文例
- そのような行動のパターンが多い
- 君の服装はいつもワンパターンだな。
- 周りの文化の行動パターンを取り入れることの重要さを彼は強調した。
- 母馬は通常毎年同じ分娩パターンを繰り返す。
- ウェザーマーチャンダイジングは、消費者の行動パターンを分析するために、天候に焦点をあてる。
- エリアマーケティングは消費者の行動パターンを探る上で地域を重要視する。
- チャートの二番底のパターン
- 下記のパターンに従って
- 私は彼の行動パターンを学んだ。
- そのノズルは7つのパターンで散水ができるようになっています。
- 同じパターンで用いても違いが生じる。
- 同じパターンを用いても違いが出来ます。
- このように、名詞の変化のパターンがある他に、動詞の語形変化も現代英語よりもいろいろな種類がありました。
- 離れることで全体が見渡せるようになり、今度はそれで、ある程度のパターン認識ができるようになるのである。
- 南諸島のコミュニティの中にはまったくの正反対の血縁関係のパターンが観察されるであろう。
- 世界貿易の変動パターンが次の表で明らかにされている。
- 居酒屋で飲んで、カラオケか。俺達もワンパターンだな。
- この母音変化はそれぞれの単語に指定される全体のアクセントパターンと大いに関係している。
- この氷結と氷解のパターンが、北極熊の主な獲物であるアザラシの分布と数に影響を与えるのだ。
- 彼とデートしたっていつもワンパターンなんだからあきちゃうのよ.
- Template_Method_パターンのページへのリンク