>>99
>新しいinterface間同士の委譲が必要になったら、
>その都度class作ってSelectorDを書かなきゃならんのか?

SelectorDの実装を色々な委譲先に対して共有したいのであれば、実装を共有する定石に従って
SelectorDはabstract classに実装すればOKだと思う。仮にSelectorDの実装が「今まだ知れぬ」
委譲先に依存する部分があれば、それはabstractメソッドとして列挙しておく。

public abstract class AbstractFat {
 public abstract String a();
 public abstract String b();

 public String c(){
  return this.a() + this.b() + "c";
 }
}

で、具象クラスでは単に継承して委譲先を注入するだけ。委譲先のインターフェイス(この
場合はThin)がSelectorDの実装に必要な依存性を十分に提供していない場合(a()が無いとか)は
コンパイルで蹴られるので多い日も安心。

public class Fat extends AbstractFat implements Thin{
 @Delegate private Thin thin;
 public Fat(Thin thin) {super(); this.thin = thin;}
}