JavaやC#などの言語では、インタフェースとクラス(※含む抽象)の2種類の方法がある。
Microsoftは.NETで、クラスでオブジェクト変数の型を指定するように推奨しているが、私は逆にインタフェースで指定する方が好ましいと思っている。
インターフェースの場合、変更にコストが掛かるのは確かかもしれないが、仮に抽象クラスでオブジェクトを指定した場合、その抽象クラスの継承クラスにしか拡張性は残されていない。
インターフェースを独立させ、文字通りにソフトウェア機能のジョイント定義として使用する方が賢明だ。