Vale a pena usar DI nesse caso?

4 respostas
Alexandre_Gazola

Pessoal,

estou trabalhando num sistema e estou considerando a possibilidade de usar injeção de dependências para tornar o sistema testável.

Bom, basicamente eu tenho um Singleton que faz acesso à uma interface JNI que por sua vez acessa código C++ para fazer manipulações no banco de dados, por exemplo:

MyServices {

       private static MyServices instance = null;

        private IPersistenceService persistenceService;

	private MyServices () {
		persistenceService = PersistenceServiceFactory.getJNIPersistenceService();
	}

public static synchronized MyServices getInstance() {
		if (instance == null) {
			instance = new MyServices ();
		}
		return instance;
	}

public void createModel() {
     persistenceService.createModel();
}

public updateModel() {
    persistenceService.updateModel();
}

public createThings() {
   for (//...//) {
          persistenceService.create(data);
   }
}

// muitos outros métodos omitidos

}

Em resumo, tenho um wrapper para um serviço de persistencia escrito em C++. Sempre que é necessário o acesso a persistencia, é usado MyServices.getInstance(). Entao tenho chamadas desse tipo espalhas em vários pontos do sistema.

Para utilizar injeção de dependências, eu teria que criar um campo privado para esse serviço em todas as classes que o utilizam, e injetar via DI no construtor ou método set (por exemplo), correto?

A minha pergunta é: vale a pena refatorar o singleton MyServices para utilizar injeção de dependências?

Muito obrigado

4 Respostas

T

Mesmo se for somente neste cenário, acredito que vale a pena usar sim. Vc não precisa de um “superconteiner” como o Spring, mas pode usar o Guice ou o hiveMind, da apache.

abraços!

esb

Juro que ao ler o título eu pensei em fundos DI…

T

hehehe eu tb entrei nesse tópico pensando nisso hauhaua

Alexandre_Gazola

hehehe, po, foi mal…

Criado 30 de julho de 2007
Ultima resposta 30 de jul. de 2007
Respostas 4
Participantes 3