Usar Google Guice para proporciona facilidad en la prueba unitaria es solo una ventaja de alto nivel. Algunas personas pueden incluso no usar pruebas unitarias en su proyecto. La gente ha estado usando Spring/Dependency Injection más que solo para pruebas unitarias.
La ventaja de bajo nivel del uso de Google Guice es una cuestión de cohesión en su aplicación, sus clases en el proyecto pueden estar ligeramente acopladas entre sí. Puedo proporcionar una clase para otra clase sin que dependan el uno del otro.
Considere este ejemplo:
public class A{
}
public class B{
A a = new A();
}
Clase B sería estrechamente unida a la clase A, o en otras palabras, depende de la existencia de una clase.
Pero con Guice puedo vez que sea imprecisa como esto:
public class B{
private A a;
@Inject
public B(A a){
this.a = a;
}
}
Clase B es ahora menos vinculados a A, y Guice es responsable de proporcionar la instancia de A en lugar de B que tiene instanciarlo . Con esto, puede ampliarlo para proporcionar una interfaz de A a B, y la implementación puede ser un objeto Mock si desea probar sus aplicaciones por un equipo.
Habiendo dicho eso, solo estamos discutiendo los beneficios de la Inyección de Dependencia hasta el momento. Beyond Dependency Injection, los beneficios de usar Google Guice son:
- Guice tiene una implementación muy limpia de la inyección de constructor. Como puede ver en el ejemplo, simplemente agrega @Injection annotation constructor.
- Guice también tiene setter Injection usando la misma anotación.
- Habiendo dicho eso, la inyección basada en anotaciones es un enfoque muy limpio en comparación con la inyección basada en XML como en otras implementaciones de DI.
- Toda la inyección de la dependencia y la configuración utilizan Java, por lo que está garantizado que obtendrá una seguridad tipo en su aplicación de forma predeterminada.
- Guice tiene una implementación muy ligera de Aspect Oriented Programming (o tal vez puede llamarlo como un envoltorio para la implementación de AOPAlliance AOP). Y lo bueno de esto es que no genera stubs o cualquier otra cosa.
Esa es la visión general de la misma.Pero a medida que profundizas con Guice, hay muchas más cosas buenas al respecto. A simple ejemplo de vida real es que si está usando GWT with MVP implementation, los componentes/widgets en su aplicación GWT están muy poco acoplados y no están estrechamente integrados entre sí.
¿Qué quiere decir exactamente "refactoring-adverse string identificadores"? ¿Podrías expandir un poco? – Geek