・依存


「依存」って2段階あるのかな。

  • 具象クラス名を意識する
public void setHoge(HogeImpl hoge) { ... }
  • 具象クラスを生成する
HogeInterface hoge = new HogeImpl();


前者への解決策は、

public void setHoge(HogeInterface hoge) { ... }

とすればOK。

後者へは、

HogeInterface hoge = new HogeInterface(); // 実は new HogeImpl(); される

ってできたら良いけど無理。(^^;
だからこうなる。

HogeInterface hoge = HogeFactory.create();


・初期化


で、単純にnewするだけならファクトリでOKなのだけど、実際の初期化手順等々を考えると不十分なわけで、、、