OO, dúvida classe reutilizável. [Resolvido]

5 respostas
ArchV

Então pessoal, tenho uma classe reutilizável ConnectorMySQL, cuja contém o método que verifica se será possível estabelecer a conexão.
No entanto, fiquei na dúvida qual é o processo correto:

Não sei se criar esta classe como concreta irá fazer sentido. Portanto, acredito que criando esta classe Abstrata e colocando o método como static (não sei se iria ser funcional, irá ficar mais fragmentado mas) acredito que faz mais sentido:
ConnectorMySQL.connect() , do que criar uma instância e acessar o método.

Em relação a OO e a boa norma de prog. Qual forma devo implementar?

5 Respostas

discorpio

Boa noite ArchV.

Voce não precisa definir a classe como Abstrata para criar métodos estáticos.

A classe pode ser instanciável, entretanto voce pode definir dentro de uma classe instanciável, métodos estáticos, a única diferença é que na hora de invocar o método estático, voce não precisará instanciar a classe, fazendo apenas referência a nome da classe para invocar o método.

Entretanto, em se tratando de conexão, acho que voce só deveria criar um classe abstrata ou métodos estáticos em caso de ser necessário abrir várias conexões com base de dados diferentes, podendo ser do mesmo tipo de banco de dados ou não, ai sim faria sentido voce criar esta regra de POO.

Agora somente com uma base de dados, a meu ver não faz sentido.

jpacheco

Se sua aplicação for web, o ideal é que utilize um datasource e não defina conexões no braço.
Caso contrario você pode criar uma classe que realiza tais conexões.
Em ambas as formas se você mesmo fara o controle transacional, o ideal é que esta classe que fornece o acesso a conexão com o banco, implemente o padrão Singleton.

Aqui ja tem algumas dicas:

http://www.guj.com.br/posts/list/57836.java

Abraço.

Tchello

Se ainda assim quiser manter essa classe Conector, sugiro a implementação de uma espécie de ServiceLocator de banco.
Uma classe abstrata/interface do tipo genérico conector ai você solicita ao serviceLocator o conector correto e ele retorna uma instância de ConectorMySQL, ou ConectorPostgres, ConectorOracle… por ai vai, onde cada uma dessas classes é uma especialista em conectar com o respectivo banco, cabendo ao locator determinar a quem ele vai instanciar.

ArchV

vlw ae pessoal, foi bem esclarecedor.

Obrigado.

Tchello

A sim, só faltou dizer (se não ficou óbvio) que as classes especializadas são implementações do conector genérico.

Criado 19 de fevereiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 5
Participantes 4