抽象属性或基构造函数参数

本文关键字:构造函数 参数 属性 抽象 | 更新日期: 2023-09-27 18:16:19

我应该选择哪种方法,为什么?有什么真正的区别吗?

摘要属性:

abstract class Table
{
    public abstract string Title { get; }
}
class InfoTable : Table
{
    public override string Title
    {
        get { return "Info"; }
    }
}

或基类构造函数参数:

abstract class Table
{
    public string Title { get; private set; }
    public Table(string title)
    {
        Title = title;
    }
}
class InfoTable : Table
{
    public InfoTable() : base("Info") { }
}

抽象属性或基构造函数参数

事实上,你的类只是数据类,这不是一个好的OOP实践。总之,我更喜欢第一种类型因为在这种情况下在子类中你可以有一个非硬编码的标题就像这个例子

class InfoTable : Table
{
    private string id;
    private string name;
    public override string Title
    {
        get { return name+id; }
    }
}

但仍可能取决于两者中哪一个更好

好的,假设这个类不像这个例子那样是静态的那么

private DynamicTitleProvider provider;
public override string Title
    {
        get { return provider.GetTitle(); }
    }