【发布时间】:2012-06-22 18:40:38
【问题描述】:
我经常看到这样的代码:
public abstract class AbstractDataReader
{
public void Read()
{
var reader = new StreamReader(FileName);
........
}
protected abstract string FileName
{
get;
}
}
public class DataReader : AbstractDataReader
{
protected override string FileName
{
get { return "data.txt"; }
}
}
对我来说,它接缝为反模式,因为 DataReader 类没有逻辑,我不能使用AbstractDataReader 而不从它继承,我必须继承类只是为了指定参数而且我也很奇怪工作速度比只通过构造函数传递参数要慢。
但是我找不到这个反模式的名字。
有人知道吗?
【问题讨论】:
-
这是C#代码,不是java,为什么是Java标签?
-
@Mauricio:Java 标记是由另一个用户编辑的,而不是由 OP 编辑的。我已将其回滚并将其正确地重新标记为 C#。
-
正如我发布的那样,它没有被任何语言标记。但我认为这样的代码也可以用 Java 语言来处理。
标签: c# design-patterns inheritance anti-patterns