public class Car
{
private Engine engine;
public Car(Engine engine)
{
// engineのインスタンス生成は外部で行い、
// その参照をEngineインターフェースの変数として保持する
// (渡されたクラスにEngineインターフェースが実装されているか
// どうかしか感知しない)
this.engine = engine;
}
public void go()
{
// コンストラクタで渡されたEngineを使うので、
// インスタンスの実装には依存しない
// (実際に渡されるクラスで変更があっても、
// それがEngineインターフェースに関わらない部分なら影響がない)
engine.start();
}
}
あと、↓に従ってくれると、他の人からも読みやすい
インターフェイスの名前付けのガイドライン
https://msdn.microsoft.com/ja-jp/library/cc433279(v=vs.71).aspx
"インターフェイス名には、この型がインターフェイスであることを示すために、プリフィックス I を付けます。"
メソッドの名前付けのガイドライン
https://msdn.microsoft.com/ja-jp/library/cc433282(v=vs.71).aspx
"Pascal 形式を使用します。"