インターフェイスには実装を含めることができないため、インターフェイスから継承するクラスでコードが重複する可能性があります。以下の例では、たとえば、ストリームからの読み取りを設定する最初の10行ほどが重複していると仮定します。 ここでの表現に焦点を当てるのではなく、各クラス間で重複コードを作成するのがいかに簡単であるかという概念に焦点を当ててください。
例えば:
public interface IDatabaseProcessor
{
void ProcessData(Stream stream);
}
public class SqlServerProcessor : IDatabaseProcessor
{
void ProcessData(Stream stream)
{
// setting up logic to read the stream is duplicated code
}
}
public class DB2Processor : IDatabaseProcessor
{
void ProcessData(Stream stream)
{
// setting up logic to read the stream is duplicated code
}
}
ProcessDataに抽象基本クラスを使用し、非抽象メンバーを追加することが1つの解決策であることに気付きました。しかし、私が本当に、代わりにインターフェースを本当に使用したい場合はどうなりますか?