パラメータ方法:インターフェイスメンバーシグネチャは、私がインタフェースについて学習していると、私の質問は
public bool Save(Car car)
{some save logic}
Save
の方法は、 Car
またはICar
、これはより良い方法ですか、それとも関係ありませんか?私はICar
と考えていました。なぜなら、このインターフェイスが別のクラスに継承されていれば、それでも動作するからです。
ありがとうございました。
パラメータ方法:インターフェイスメンバーシグネチャは、私がインタフェースについて学習していると、私の質問は
public bool Save(Car car)
{some save logic}
Save
の方法は、 Car
またはICar
、これはより良い方法ですか、それとも関係ありませんか?私はICar
と考えていました。なぜなら、このインターフェイスが別のクラスに継承されていれば、それでも動作するからです。
ありがとうございました。
は、このようにそれについて考える:ICar
パラメータとしてCar
を期待場合、はは、インターフェイスを使用するときたかった何でデカップリングしながら、ICar
は、Car
に明示的に依存することになります。
ICar
がCar
に依存している場合:
public interface ICar
{
void Save(Car car);
}
public class Car : ICar
{
public void Save(Car car) { }
}
public class Van : ICar
{
// Here Van needs to have a Car object, why should it?
public void Save(Car car) { }
}
Car
は廃止された場合(例えば、一般的すぎるとみなされる)、あなたはあなたの全体のコードをリファクタリングする必要があると思います。
ICar
がICar
に依存している場合代わりに、:
public interface ICar
{
void Save(ICar car);
}
public class Car : ICar
{
public void Save(ICar car) { }
}
public class Van : ICar
{
public void Save(ICar car) { }
}
、本当にCar
が存在するかどう、あなたがは、その実装にを結合されていない全く関係ありません。
ICar
が実装されているので、既にICar
になっているので、パラメータとして渡す必要はありません。
は考えてみましょう:対
public interface ICar
{
// Will save myself
void Save();
}
:
public interface ICar
{
// Will save some ICar
void Save(ICar car);
}
コンパイルエラーが発生しました。 public interface ICar {void Save(ICar car);} パブリッククラスCar:ICar {public void Save(Car car){}} – selami
@selami気を散らして固定しました。 –
@CamiloTerevinto完璧に説明され、私が探していたもの、感謝します。 –
を 'ICar'インタフェースの一部' Save'方法ですか?それではなぜICarの別のインスタンスを渡すのですか? – orhtej2
@ orhtej2良い点。私はICarを削除しました。なぜなら私はすでに現在のインスタンスを持っているからです。ご協力いただきありがとうございます。 –