
6.8
テンプレート
187
レートパターンは、継承が実装の核となるので、これまでに見てきたどのパターンよりも古典的な意味
でのオブジェクト指向であると考えられます。
テンプレートとストラテジーの目的は非常に似ていますが、両者の主な違いは構造と実装にありま
す。どちらも共通部分を再利用しながらアルゴリズムの一部を変更することを可能にしてくれます。し
かし、ストラテジーでは「動的な」変更が可能で、実行時にも変更できるのに対し、テンプレートでは
具象クラスが定義された瞬間にアルゴリズムが決定されます。このような前提で考えれば、テンプレー
トパターンはあらかじめパッケージ化されたアルゴリズムのバリエーションを作成しておきたい場合に
より適していると言えるでしょう。いつもそうですが、どちらのパターンを選ぶかは開発者しだいです。
一つひとつのユースケースについてさまざまな長所短所を考慮しなければなりません。
6.8.1
設定管理用テンプレート
ストラテジーとテンプレートの違いを理解するために、ストラテジーパターンの節で定義したオブ
ジェクト
Config
を、今度はテンプレートを使って再実装してみましょう。前のバージョンのオブジェ
クト
Config
と同様、異なるファイルフォーマットを使って一連の設定属性を読み書きできるものがほ
しいのです。
テンプレートクラスの定 義 から始 めましょう。
ConfigTemplate
という名 前にします(
18_
template
)。
const fs = require('fs');
const ...