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