私はまだC#とインターフェイスを使い始めていて、理解していると思っていました。混乱は、私はここのためのいくつかの明確化を求めていることを発見した場合、あなたはインターフェイスを作成し、持っているクラスを継承し、それ"Programming to an interface"のコンセプトを忘れてしまったと思います
public Interface ISomeInterface
{
//some methods/properties
}
public class FooClass : ISomeInterface
{
//implemented ISomeInterfaces methods/properties
}
からそして、あなたはあなたのプログラムのどこかの実装では、このクラスのオブジェクトを使用する場合
public class BarClass
{
private ISomeInterface _someInterface;
public BarClass(ISomeInterface someInterface)
{
_someInterface = someInterface;
}
//rest of class
}
私の混乱はなぜこのように設定されているのですか?私はこれを理解する
public class BarClass
{
private FooClass _fooClass;
public BarClass(FooClass fooClass)
{
_fooClass = fooClass;
}
//rest of class
}
何をしないのです:私は、私はタイプFooClassの新しいオブジェクトをインスタンス化するだけでなく、のようなコンストラクタでタイプFooClassのオブジェクトを使用していただろうと思いましたか?インターフェイスのオブジェクトを直接宣言するとは思わなかったのですか?
ありがとうございます。
TestFooのような新しいクラスを作成することは良い考えではありません。なぜ嘲笑しないの? –
@Draco Ater、Mockingが一般的に好ましいですが、私はコンセプトの要点から気をそらしたくありませんでした。クラスが動的に生成されるか手作業で生成されるかにかかわらず、基本的なコンセプトは、機械的標準が建築機械の異なる互換部品の置換を可能にするように、あるものを別のものに置き換えることができるということです。ソフトウェアでは、特にテストを有効にするために非常に便利です。 –