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