mix-in

mix-in的なものの言語サポート、やっぱり欲しいよなあ。
一番シンプルなケースだと、extends TestCaseな、ちょっとした機能が追加されたテストケースクラスっていっぱいある(GroovyTestCase, djUnitのTestCase(VMO対応), S2TestCase, jMockの...etc)んだけど、たとえばそれらの機能って排他してるわけじゃないんだよね。たとえば実際に S2TestCaseに djUnitのTestCaseを混ぜたものを仕事では使ってる(コピペするか委譲。しかしこのケースは委譲するにはどうかと)。
その昔matzさんのページで多重継承はmix-inの実現スタイルのひとつだ、みたいなことを見かけた(書き込みか何かだったと思われる)けど、type-safeな言語でも多重継承でラクチンmix-inできるんだー、と思った。Rubyスタイルのmix-inってコンパイルタイムでtypesafeな言語では使えないと思うので、なんか他の方法を言語仕様とかコンパイラレベルでサポートしてくれたらなあ。

単純にmixするだけならRubyスタイルもプリプロとかでいけそうだし、implementsでインタフェースを「宣言」すればまあ、ありかもしれない。何をいってるのかわからなくなってきたぞ。

public class S2DjJmockGroovyTestCase implements IS2TestCase, IMockTestCase, IDjTestCase {
  コンストラクタ()..

#include "S2TestCase"
#include "MockTestCase"
.
.

}

ん、こんなんありそうだな。探してみようかしらん? 一般的でないと仕事でつかったら怒られそうだけど・・・