自己レスですが、これかも。しばらく読んでみます。
http://www.java2s.com/Tutorial/Java/0280__SWT/DragandDropinsideTable.htm

>>984
例えば以下は、DIコンテナの一つであるGoogle Guiceの場合です。

com.google.inject.Moduleをimplementsしたクラスに、
以下のようなインターフェースとクラスの対応を書いておきます。
(メソッドごとに対応関係を一つ表し、複数の対応を一つのModuleに書ける)

public Class<? extends TheInterface> bindTheInterface() {
    // class TheClass implements TheInterface
    return TheClass.class;
}

すると、他のクラス群ではインスタンス変数にアノテーションを付けるだけで、
自動的に対応するクラスのインスタンスが代入されます。

@Inject
TheInterface x; // 自分で代入しなくてもTheClassのインスタンスが代入される

Moduleごとに別の対応を定義できるので、使用する側のコードで
別のModuleを選ぶと、代入される実装クラスは、一斉に切り替わるのですよ。