Il vous permet de vous DataReader sans avoir besoin de savoir quel type de DataReader vous utilisez (par exemple SqlDataReader, OleDbDataReader, EtcDataReader
), donc si un jour vous voulez changer le lecteur de données que vous utilisez, cela n'aura pas d'impact sur votre logique, en d'autres termes ça vous donne l'abstraction. Par exemple:
vous pouvez utiliser
IDbCommand command = GiveMeSomeCommand();
IDataReader r = command.ExecuteReader();
sans savoir quel fournisseur vous utilisez
il peut être:
private static IDbCommand GiveMeSomeCommand()
{
return new OleDbCommand();
}
ou il peut être
private static IDbCommand GiveMeSomeCommand()
{
return new SqlCommand();
}
ou autre.
EDIT:
Vous pouvez également utiliser les DBFactories.
DbProviderFactory factory = GiveMeSomeFactory();
IDbCommand command = factory.CreateCommand();
IDataReader r = command.ExecuteReader();
//and create more objects
IDataAdapter adapter = factory.CreateDataAdapter();
IDbConnection conn = factory.CreateConnection();
puis créez votre fournisseur dans une autre couche
private DbProviderFactory GiveMeSomeFactory()
{
if(something)
return SqlClientFactory.Instance;
else if(somethingElse)
return OracleFactory.Instance;
else if(notThisAndNotThat)
return MySqlFactory.Instance;
else
return WhateverFactory.Instance;
}
Je interfaces d'apprentissage et avait la même question. La réponse de Pablito était exactement ce que je cherchais et a confirmé que je construisais ma mise en œuvre correctement. Merci les gars!! –