例:
モバイルゲームで「動物」を実行するメソッドがある場合は、単一の
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
「壁」の後ろに隠されています。
編集
では、「インターフェイス構造を使用するだけでなく、インターフェイスにプログラミングするのはなぜですか」という質問に対する答えです。は:
アーキテクチャを構築またはベース化するために使用できるinterface
isおよびinstrument 。同じことは、、またはを使用するだけで実現できます。つまり、「インターフェースへのプログラミング」とは、プログラムの最大限の保守性、柔軟性、および呼び出し可能性を確保するために、コンシューマーコードから具体的な実装の詳細を(可能な限り)隠すことを念頭に置いてプログラミングすることです。、、、、あなたが望むものは何でも使用してください。interface
contract
abstract base class
simple base class
virtual methods
interface
abstract class
base class