質問: new AbcServiceImpl(); ```
回答: 規模は特に関係なく、インタフェースさえ変わらなければ、そのクラスの利用側は実装を変えることなく切り替えることができるからです。 アプリケーションの寿命が長いことが想定され、なおかつ切り替える頻度やそれなりに高いことも予想される場合----例えばデータベースなど外部からデータを取得するデータ形式は変わらないが、取得ロジックだけ変えたい場合があると予想されたときには、インタフェースさえ合致していれば実装を修正することはありません。 他にも実用面ではテストコード(モック化)が作りやすいでしょうか。 もちろん、寿命はそれほどないアプリケーションの場合や、実装クラスの切り替えがあまり予想されることがない場合は、昨今のテストフレームワークが優秀なこともあり、わざわざインタフェースを用意する必要性はないでしょう。