石橋秀仁です。

At Fri, 17 Dec 1999 23:29:14 +0900
  "Hideaki Takata" <hideakit / d3.dion.ne.jp> wrote:

> > JavaのRunnable を Mixin して、method run() を上書き実装する、
> > というのがそれでは?  委譲というと  delegation  という単語を
> > 想像しますが、むしろ GoF の Template Method だと思います。
> 
> ええと、僕が考えてたのは、Javaのinterfaceのノリに確かに近いのですが、
> でもTemplate Methodみたいなのとは違って
> (だって、型がないのにそんなのしてもあんまり意味ないじゃないですか)

ぼくがTemplate Methodといったのは、「Gang of Four」のデザインパターン
のことですけど、ひょっとしてC++のテプレート関数と誤解されてませんか。
# 型の有無は関係ないので、気になりました

> つまり、何らかの多人数でやるプロジェクトで、
> たくさんの作者の違うクラスが
> 同じ機能を実装していて欲しいといった時、
> そのプロジェクト内でその機能を実装するメソッドの名前"method_foo"を決めておく
> (できるだけ説明的な名前がいいと思う)
> そして、その機能を持っていないクラスは、"method_foo"という名前のメソッドを使
> わない様に決めておく。
> そのうえで、"method_foo"の機能を誰でも新しいクラスに簡単に実装できるように、
> 典型的なmethod_foo実装Mixinとか、method_fooの機能を肩代わりしてくれる委譲先
> クラス(ライブラリ?)を作っておく。

まさに、それをGoFはTemplate Method Patternと呼んだのでは。

> てな感じです。
> だから、インターフェイスを継承するというより、
> 実装を手早く作るレシピ&料理が何か分かるメニュー
> を作る感じです。

「template: 型紙、型」ですからね。

> > > あるいは、特定の命名規則に従っているなら、
> > > ある特定のお仕事をできると考えて良
> > > いとか。
> 
> という感じです。
> 
> # あんまり、実用的じゃないかも。

その命名規則も、人間の下らないスペルミスなどで失敗することもあるので、
InterfaceやMix-inなどで半自動化できれば便利なのでしょう。

Is she bashing?
Hideto ISHIBASHI (http://vip.cis.kurume-nct.ac.jp/~s34204/)