Tenho visto em alguns sites que a inversão de controle diminue a dependencia que existe entre uma classe e outra de modo que você não precise instaciar o objeto na página, mas se é esse o problema não seria uma alternativa usar métodos estáticos?
Ainda não entendo bem desse conceito de IoC então provavelmente estou errado mas quero ouvir o que você tem a dizer…
Amigo a grosso modo trabalhar com metodos estaticos não seria muito viavel dependendo do seu objetivo… isto pois sabemos que classes que possuem variaveis e metodos staticos uma vez carregadas pela JVM permanecem na heap enquanto a JVM estiver executando… Logo não seria uma boa ideia no caso de uma aplicaçao de medio e grande porte. E por isso que eu acho que a inversao de controle é uma tecnica bastante valida ainda pra diminuir o acoplamento.
Um exemplo rápido de IOC
Método sem IoC:
public void inserir(Cliente cliente) {
Connection c = FabricaConexao.abrirConexao();
....//faz algumas coisas e tal
statement.insert(cliente);
c.commit();
c.close();
}
Método com IoC:
public void inserir(Cliente cliente, Connection c) {
statement.insert(cliente);
}
A grande sacada do IoC é inverter algumas responsabilidades, como no exemplo citado acima, onde o método inserir não cuida da abertura da conexão e nem é responsável pelo commit ou rollback da transação. Ao invés disso ele transfere a responsabilidade para quem o chama e espera receber a conexão pronta para que ele possa usar.