例:
モバイルゲームで「動物」を実行するメソッドがある場合は、単一の
IAnimalインターフェイスを定義し、すべての動物に対して独自の実行の仕組みを定義できます。
public interface IAnimal {
Run();
}
public Dog : IAnimal{
public void Run() {
//DOG RUN CHINEMATICS
}
}
public Elephant: IAnimal{
public void Run() {
//ELEPHANT RUN CHINEMATICS
}
}
したがって、抽象化の背後に具体的な実装を隠しIAnimalます(通常はインターフェースのコントラクトと呼ばれます)。
したがって、物理エンジンの実行中に、次の1つのメソッドを定義するだけで済みます。
public void RunAnimal(IAnimal animal) {
animal.Run();
}
そしてそれを次のように呼びます:
RunAnimal(new Dog()); //WILL CALL DOG CONCRETE METHOD
RunAnimal(new Elephant()); //WILL CALL ELEPHANT CONCRETE METHOD
したがって、RunAnimal方法では、動物の具体的な押し込みの詳細がIAnimal「壁」の後ろに隠されています。
編集
では、「インターフェイス構造を使用するだけでなく、インターフェイスにプログラミングするのはなぜですか」という質問に対する答えです。は:
アーキテクチャを構築またはベース化するために使用できるinterfaceisおよびinstrument 。同じことは、、またはを使用するだけで実現できます。つまり、「インターフェースへのプログラミング」とは、プログラムの最大限の保守性、柔軟性、および呼び出し可能性を確保するために、コンシューマーコードから具体的な実装の詳細を(可能な限り)隠すことを念頭に置いてプログラミングすることです。、、、、あなたが望むものは何でも使用してください。interfacecontractabstract base classsimple base classvirtual methodsinterfaceabstract classbase class