Primeiro, a criação de objetos relacionados de classes pode, de fato, ser feita por novo. No entanto, quando o projeto é grande demais e o objeto tem dependências demais, precisamos escrever muito código novo ao construir o objeto, e pode haver um método de chamar diretamente o objeto após esquecer de instanciar alguns objetos dependentes, então haverá uma exceção de ponteiro nulo. Se esse processo for deixado para o gerenciamento de contêineres, não precisamos nos preocupar com instanciação de objetos, e não haverá exceções de ponteiro nulo ao usar objetos dependentes em qualquer momento, e o código pode ser simplificado. Segundo, os atributos usados no processo de chamada de método podem ser atributos de instância; se todos forem definidos como estáticos, e quanto aos dados usados no método? Se você definir todos os métodos como estáticos, então as propriedades da classe referenciada no método também devem ser definidas como estáticas, o que equivale a atributos globais, então certamente haverá problemas de sincronização de dados. Na verdade, faz sentido pensar nos princípios de programação dados no padrão de design, todos voltados para construir código altamente legível, fácil de manter e escalável. Felicidades!
É conveniente montar software na forma de blocos de construção, e é conveniente criar softwares com alta coesão e baixo acoplamento (extraindo dependências do código) Desenvolvimento colaborativo, depuração de código (não precisa integrar componentes, eles podem ser testados separadamente) e o código criado é mais robusto.
O desenvolvimento de projetos dá atenção à alta coesão e ao baixo acoplamento, e o uso da injeção de dependência pode evitar o uso da nova área de palavras-chave para criar objetos, reduzindo assim o acoplamento entre classes
|