単純なクラスでメソッドをスタブ化したいときはいつでも、ほとんどの場合、インターフェイスを抽出します。そのクラスのコンストラクターがパブリックであり、複雑すぎたり複雑な型に依存したりしていない場合は、問題のメソッドを仮想化して継承するだけで同じ効果があります。これは、インターフェイスを抽出するよりも望ましいですか? もしそうなら、なぜですか?
編集:
class Parser
{
public IDictionary<string, int> DoLengthyParseTask(Stream s)
{
// is slow even with using memory stream
}
}
2 つの方法があります。インターフェイスを抽出するか、メソッドを仮想化します。IParser
Parser
私は実際にはインターフェースを好みますが、それはタプルの爆発につながる可能性があります...