重新定义派生类方法的单个属性

时间:2014-01-28 14:31:50

标签: c# oop inheritance polymorphism

我有一个Server课程:

class Server
{
    private SqlConnectionStringBuilder _sqlConnectionStringBuilder;

    public SqlConnectionStringBuilder SqlConnectionStringBuilder
    {
        get { return _sqlConnectionStringBuilder; }
        set { _sqlConnectionStringBuilder = value; }
    }

    public List<Database> getDeployableDatabases() {
        // the connectionString is different
        String connectionString = this.SqlConnectionStringBuilder.ConnectionString;

        // do something (this part is equal in every subclass)
    }
}

来自Server类的许多其他类可以继承(例如开发服务器,表示DevServer类)。每个派生类都应重新实现getDeployableDatabases方法,以重新定义connectionString属性。由于这会添加大量重复的代码,问题是:如何在OO透视图中编写DevServer类(以及Server类,如果需要)?

2 个答案:

答案 0 :(得分:0)

您可以实现template pattern并在特定的抽象方法中重新定义字符串,该方法必须由每个派生类实现。

答案 1 :(得分:0)

您可以使用getter定义虚拟内部属性以获取连接字符串。 在您的方法中,您可以使用此属性来获取连接字符串。所以你只在子类中覆盖了这个属性。