由于接口不能包含实现,这似乎会导致继承接口的类中存在代码重复。在下面的示例中,假设设置从流读取的前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
}
}
我意识到使用一个抽象基类来处理数据并添加非抽象成员是一种解决方案。但是,如果我真的非常想使用接口呢?