由于接口不能包含实现,在我看来这会导致从接口继承的类中的代码重复。在下面的示例中,假设设置从 Stream 读取的前 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 使用抽象基类并添加非抽象成员是一种解决方案。但是,如果我真的,真的想改用界面怎么办?