Ole*_*rov 1 c# inheritance design-patterns anti-patterns
我经常看到这样的代码:
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"; }
}
}
Run Code Online (Sandbox Code Playgroud)
至于我它接缝作为反模式,因为DataReader类没有逻辑,我不能AbstractDataReader没有继承它,我也必须继承该类只是为了指定参数而且我工作得慢,然后只是把它放在那里也很奇怪参数通过构造函数.
但我找不到这种反模式的名称.
有人知道吗?
是的,这是一种反模式.抽象类已经强制派生类如何工作,这里对于单个类的类层次结构没有任何优势.
如果抽象类改为调用纯虚函数来获取StreamReader它,那就有意义了.然后,不同的派生类可以附加到文件,网络流或动态生成的数据.
这里的反模式是"违反开放原则"(SOLID的第二部分).