それはデザインパターン-再利用可能なオブジェクト指向ソフトウェアの本の要素で言われています:
実装が1つ(1対1)しかない状況では、抽象実装クラスを作成する必要はありません。これは、ブリッジパターンの縮退したケースです。AbstractionとImplementorの間には1対1の関係がありますが、クラスの実装の変更が既存のクライアントに影響を与えてはならない場合、つまり、再コンパイルする必要はなく、再リンクするだけでよい場合でも、この分離は役立ちます。
実装の変更によってスーパークラス(この場合は抽象)が再コンパイルされるJavaのケースを想像できないため、コンパイル時の利点については疑問があります。
たとえば、XがYを拡張し、クライアントが次のことを行う場合:
Y y = new X();
Xの変更は、Yの再コンパイルを意味するものではありません(もちろん、Xのメソッドシグネチャを変更したくない場合)
ブリッジパターンを使用する場合もまったく同じです。
YAbstraction yabstraction = new YRefinedAbstraction(new XImplementor());
XImplementorの変更は、YAbstractionの再コンパイルを意味するものではありません。
したがって、私によれば、この利点はJavaでは発生せず、1対1の場合=>ブリッジパターンは必要ありません。
おそらく、サブクラスの変更により、スーパークラスが他の言語で再コンパイルされるようになりますか?SmallTalkやC++のように?
あなたの意見は何ですか?