std.database design suggestion
bls
bizprac at orange.fr
Mon Oct 10 04:19:11 PDT 2011
well, the previous code was half baked, this should explain what I want
to archive...
int main(string[] args)
{
DatabaseFactory factory;
if(args[0] == "MySQL")
factory = new MySQLFactory();
else
factory = new PostreSQLFactory();
updatePricelist(factory);
return 0;
}
abstract class Database {
//common database stuff
public abstract void connect(string user, string pw);
// execSql(); prepare() etc...
}
abstract class DatabaseFactory {
public abstract Database GetDatabase();
}
final class PostgreSQL:Database {
// common
public override void connect(string user, string pw) {
}
//PostgreSQL specif
public void funkyPGstuff() {}
}
final class PostreSQLFactory:DatabaseFactory {
public override Database GetDatabase() {
return new PostgreSQL();
}
}
final class MySQL:Database {
// common
public override void connect(string user, string pw) {
}
//MySQL specif
public void funkyMySQLstuff() {}
}
final class MySQLFactory:DatabaseFactory {
public override Database GetDatabase() {
return new MySQL();
}
}
// Update PriceList without knowing the concrete database
void updatePricelist(DatabaseFactory factory) {
Database db = factory.GetDatabase();
//db.execSQL("UPDATE ...");
}
More information about the Digitalmars-d
mailing list