From: Hideaki Takata Date: 1999-12-20T14:10:07+09:00 Subject: [ruby-list:19731] Does Ruby need Template Method ? たかたです > ぼくがTemplate Methodといったのは、「Gang of Four」のデザインパター ン > のことですけど、ひょっとしてC++のテプレート関数と誤解されてません か。 > # 型の有無は関係ないので、気になりました C++のテンプレートと誤解した訳じゃあないんですけど、 Template Methodっていうのは、僕の理解していたとこでは 1、処理の全体の流れを定義し、その中の一部のステップをサブクラスで 定義できるようにする(たとえば、フレームワークを作るように)。 2、その目的で、サブクラスでオーバーライドするためのメソッドを定義す る。 3、たいていは、スーパークラスではそのメソッドは何もしないただのフック である。 4、なんでそんなものを作るかというと、スーパークラスで定義しておかない と C++とかJavaのような、型のある言語でだとサブクラスにしかないメソッド を呼び出そうとしたら、サブクラスの名前を呼び出し側で ハードコーディングせざるをえないから。 5、したがって、Rubyの様な言語では、このようななにもしないスーパークラ スを 定義する必要はない。 と思ってました。 Template MethodとかFactory MethodのようなGoFの一部のパターンは オブジェクト指向言語全体で必要なパターンというよりも、 C++などの柔軟性のない言語の都合で考えられたテクニックのように 感じています。 # 他のデザインパターンに比べて実装寄りというか低レベルというか # それとも、僕がなにか勘違いしてるんでしょうか たかたひであき