Template method patternとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Template method patternの意味・解説 

Template Method パターン

(Template method pattern から転送)

出典: フリー百科事典『ウィキペディア(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 pattern」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Template method pattern」の関連用語

Template method patternのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Template method patternのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのTemplate Method パターン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS