我有一个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
类,如果需要)?
答案 0 :(得分:0)
您可以实现template pattern并在特定的抽象方法中重新定义字符串,该方法必须由每个派生类实现。
答案 1 :(得分:0)
您可以使用getter定义虚拟内部属性以获取连接字符串。 在您的方法中,您可以使用此属性来获取连接字符串。所以你只在子类中覆盖了这个属性。