Usuário com melhor resposta
retornar dbcommand ou Idbcommand

Pergunta
-
Ólá, estou estudando códigos genéricos para bancos de dados, e me deparei com essa dúvida.
Qual seria a diferença de eu utilizar:
IDBComand teste = método_que_retorna_idbcommand
ou DBComand teste = método_que_retorna_dbCommand
Sei que a classe dbcommand implementa a interface idbcommand, mas caso eu fosse utilizar métodos existentes na interface, qual seria mais rapido, utilizar a interface ou a classe abstrata?
outra coisa, qual diferença entre IDataAdapter e IDbDataAdapter.
Obrigado- Movido Ricardo Oneda terça-feira, 23 de junho de 2009 11:18 ([Loc]From:ASP .NET)
Respostas
-
Olá,
Se você utilizar a classe DbCommand, então qualquer classe que queira extender a sua (ou interagir, se for o caso) terá que, obrigatóriamente, herdar da classe DbCommand.
Já se você utilizar a interface IDbCommand, então você dá mais liberdade para as classes que quiserem, novamente, extender ou interagir com a sua classe, pois poderão ter qualquer hierarquia, desde que em algum ponto dessa hierarquia, alguém implemente a interface IDbCommand.
Outro ponto a considerar, é que nem todos os métodos da classe DbCommand são virtuais (virtual), o que significa que não é possível mudar o comportamento de todos os métodos e implementar sua própria versão... Com a interface, isso é possível pois não existe qualquer herança de código... É apenas um "contrato".
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com- Sugerido como Resposta Ari C. Raimundo terça-feira, 7 de julho de 2009 02:07
- Marcado como Resposta Wagner dos Santos VasconcellosModerator quarta-feira, 30 de março de 2011 11:49
-
Oi,
A diferença de optar por uma classe ou uma interface deve ser estudada em um nível mais alto.
Sugiro um aprofundamento em orientação a objetos para entender quais as vantagens de se trabalhar com interfaces.
As vantagens são muito interessantes, mas como eu disse, se trata de uma discussão mais ampla.
Ou seja, em algumas linhas de código a diferença pode ser imperceptível, mas na modelagem e estruturação dos objetos e componentes do sistema, aí sim a opção por interfaces poderá trazer grandes benefícios.
Caso se interesse em aprofundar no entendimento de interfaces um conceito interessante de estudar é Injeção de Dependência (DI).
[]'s
Rafael Noronha
http://rafanoronha.net/
follow me: @rafanoronha- Sugerido como Resposta Ari C. Raimundo terça-feira, 7 de julho de 2009 02:07
- Marcado como Resposta Wagner dos Santos VasconcellosModerator quarta-feira, 30 de março de 2011 11:48
Todas as Respostas
-
Oi,
A diferença de optar por uma classe ou uma interface deve ser estudada em um nível mais alto.
Sugiro um aprofundamento em orientação a objetos para entender quais as vantagens de se trabalhar com interfaces.
As vantagens são muito interessantes, mas como eu disse, se trata de uma discussão mais ampla.
Ou seja, em algumas linhas de código a diferença pode ser imperceptível, mas na modelagem e estruturação dos objetos e componentes do sistema, aí sim a opção por interfaces poderá trazer grandes benefícios.
Caso se interesse em aprofundar no entendimento de interfaces um conceito interessante de estudar é Injeção de Dependência (DI).
[]'s
Rafael Noronha
http://rafanoronha.net/
follow me: @rafanoronha- Sugerido como Resposta Ari C. Raimundo terça-feira, 7 de julho de 2009 02:07
- Marcado como Resposta Wagner dos Santos VasconcellosModerator quarta-feira, 30 de março de 2011 11:48
-
A performance é a mesma. O compilador e o Jitter farão o trabalho de maneira quase idêntica nos dois casos.
IDataAdapter é um adapter ligado a qualquer fonte de dados. IDbDataAdapter herda de IDataAdapter, e é específico para bases de dados relacionais.
Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com -
Olá,A resposta da sua pergunta é diretamente proporcional à complexidade do código que você está desenvolvendo.Por exemplo:A Microsoft criou essas interfaces para facilitar o desenvolvimento de drivers para o .NET Framework. Ela usa nos drivers padrões e tudo mais.A classe DbCommand é a classe de mais alta hierarquia dentro do subset de classes do ADO.NET. A partir dela que vem o SqlCommand, OracleCommand, OleDbCommand entendeu?Mas voltando... Digamos que você esteja utilizando o MySQL e gostaria que seu código funcionasse com o driver do MySQL, mas o MySQL não usa a DbCommand. Ele implementou sua própria classe MySqlDbCommand. Pronto. Seu código já não iria funcionar.Endendeu por que? Você programou diretamente para a implementação da interface IDbCommand. Se você tivesse utilizado o IDbCommand no seu código, você não teria problema algum. Todas as funcionalidades básicas descritas na IDbCommand foram absorvidas pelo seu código.Então, sempre que possível, faça uso das interfaces. :)Espero ter ajudado!!
Plácido Bisneto - Aprendiz de Arquiteto -
Olá,
Se você utilizar a classe DbCommand, então qualquer classe que queira extender a sua (ou interagir, se for o caso) terá que, obrigatóriamente, herdar da classe DbCommand.
Já se você utilizar a interface IDbCommand, então você dá mais liberdade para as classes que quiserem, novamente, extender ou interagir com a sua classe, pois poderão ter qualquer hierarquia, desde que em algum ponto dessa hierarquia, alguém implemente a interface IDbCommand.
Outro ponto a considerar, é que nem todos os métodos da classe DbCommand são virtuais (virtual), o que significa que não é possível mudar o comportamento de todos os métodos e implementar sua própria versão... Com a interface, isso é possível pois não existe qualquer herança de código... É apenas um "contrato".
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com- Sugerido como Resposta Ari C. Raimundo terça-feira, 7 de julho de 2009 02:07
- Marcado como Resposta Wagner dos Santos VasconcellosModerator quarta-feira, 30 de março de 2011 11:49
-
-