public static void Main()
var dbCommand1 = new DbCommand(new SqlConnection("sql connection string"));
var dbCommand2 = new DbCommand(null);
private DbConnection Connection
public DbCommand(DbConnection dbConnection)
if (dbConnection == null)
throw new InvalidOperationException("invalid dbConnection object: null");
Connection = dbConnection;
class SqlConnection : DbConnection
public SqlConnection(string connection): base(connection)
public override void DbOpen()
Console.WriteLine("Opening Sql Connection!");
public override void DbClose()
Console.WriteLine("Closing Sql Connection!");
class OracleConnection : DbConnection
public OracleConnection(string connection): base(connection)
public override void DbOpen()
Console.WriteLine("Opening Oracle Connection!");
public override void DbClose()
Console.WriteLine("Closing Oracle Connection!");
abstract class DbConnection
public string connectionString
public DbConnection(string connectionstring)
if (String.IsNullOrWhiteSpace(connectionstring))
throw new ArgumentNullException("invalid dbconnection string, cannot be null or whitespace.");
connectionString = connectionstring;
public abstract void DbOpen();
public abstract void DbClose();