インターフェースとDI

インターフェースクラスのメリットがいまいちと思ったけど、springのコンテナを使うとき、利用側でインターフェースを構えておいて、getBeanで実装クラスのオブジェクトを渡してくれれば確かに実クラス同士で結合することもなくなる。

public interface 帳票作成

で、beanをたくさん定義しておいても、

public class beanRepo1 implements 帳票作成
public class beanRepo2 implements 帳票作成
public class beanRepo3 implements 帳票作成

コンテナ側でそれぞれnewした結果を渡してくれたら、

帳票作成 obj帳票 = xxx.getBean("beanRepo1");

getBeanする相手だけ変えればいいわけだ。

さらに、.getBean("beanRepo1");
この部分も定義側に持てれば、プログラム修正も、beanRepo4とかも
追加しやすい。

でも後からコードを見るのは大変。