Java Spring Acoplamiento suelto
El concepto orientado a objetos es un buen diseño para dividir el sistema en un grupo de objetos reutilizables. Sin embargo, cuando el sistema se hace más grande, especialmente en los proyectos Java, las enormes dependencias de objetos siempre estarán estrechamente acopladas para dificultar o modificar los objetos. En este caso, todas las dependencias de objetos se pueden gestionar de manera fácil y eficiente utilizando el marco Spring como un módulo central.
Ejemplo del generador de salida
Veamos un ejemplo, supongamos que su proyecto tiene una salida de función en formato CSV o JSON. Su código puede parecer el siguiente ejemplo:
Archivo: IoutputGenerator.Java Output Generator Interface Package com.yiibai.output; Public Interface IoutputGenerator {public void generateOutput ();} archivo: csvoutputGenerator.java Un generador de salida CSV se utiliza para implementar la interfaz de IoutputGenerator. paquete com.yiibai.output.impl; import com.yiibai.output.ioutputGenerator; public class csVoutputGenerator implementa ioutputGenerator {public void generateOutput () {system.out.println ("CSV Generator de salida"); }} Archivo: jsonoutputGenerator.java Se utiliza un generador de salida JSON para implementar la interfaz IoutputGenerator. paquete com.yiibai.output.impl; import com.yiibai.output.ioutputGenerator; public class jsonoutputGenerator implementa ioutputGenerator {public void generateOutput () {System.out.println ("JSON Generator de salida"); }} Hay varias formas de llamar a IoutputGenerator y cómo usar Spring para evitar que los objetos estén estrechamente vinculados entre sí.
1. El método 1 se llama directamente
La forma normal es llamarlo directamente.
paquete com.yiibai.common; import com.yiibai.output.ioutputGenerator; import com.yiibai.output.Impl.csvoutputGenerator;/ * http://www.manongjc.com/article/1602.html */public class App {public static void Main (string [] {iaoutator CsVoutputGenerator (); output.GenerateOutput (); }}Hay problemas
De esta manera, el problema es que la "salida" está estrechamente acoplada a CSVoutputGenerator, y cada cambio generado por la salida puede implicar cambios en el código. Si este código está disperso a lo largo de su proyecto, cada cambio generado por la salida hará que sufra.
Método 2 Llámalo con una clase de ayuda
Tal vez desee crear una clase de ayuda para implementar todo el resultado dentro de la clase.
paquete com.yiibai.output; import com.yiibai.output.ioutputGenerator; import com.yiibai.output.impl.csvoutputGenerator; public class OutPuthElper {IoutputGenerator outputGenerator; public OutPuthElper () {outputGenerator = new CSVoutputGenerator (); } public void GenerateOutput () {outputgerGenerator.GenerateOutput (); }} Llámalo a través de la clase de ayudante
paquete com.yiibai.common; import com.yiibai.output.outPuthelper; public class App {public static void main (string [] args) {OutPuthelper output = new OutPuthelper (); output.GenerateOutput (); }}Hay problemas
Esto parece más elegante que antes, solo administrar una clase de ayuda, pero la clase de ayuda todavía está bien acoplada al CSVoutputGenerator, y cada cambio generado por la salida aún implica pequeños cambios en el código.
Método 3 Spring
En este caso, la inyección de dependencia de primavera (DI) es una buena opción. Spring permite que la generación de salida se acople libremente al generador de salida.
La clase OutPuthelper tiene modificaciones más pequeñas.
paquete com.yiibai.output; import com.yiibai.output.ioutputGenerator; public class OutPuthElper {IoutputGenerator outputGenerator; public void generateOutput () {outputGenerator.GenerateOutput (); } public void setOutputGenerator (ioutputGenerator outputGenerator) {this.outputGenerator = outputGenerator; }} Cree un archivo de configuración Spring Bean y declare todas las dependencias de objetos Java aquí.
<!-spring-common.xml-> <frijoles xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: esquemalo Cation = "http://www.springframework.org/schema/beansshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id = "Outputhelper"> <Property name = "outputGenerator" ref = "csVoutputGenerator" /> < /bean> <bean id = "csVoutputGenerator" /> <bean id = "jsonoutputGenerator" /> </ beans>
Llámalo a través de la primavera
paquete com.yiibai.common; import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlaPplicationContex ClasspathxmLapplicationContext (new String [] {"Spring-Common.xml"}); OutPuthElper Output = (OutPuthelper) context.getBean ("OutPuthelper"); output.GenerateOutput (); }} Ahora, simplemente cambie el archivo XML Spring usando un generador de salida diferente. Solo modifique los archivos XML Spring sin modificaciones sin censura significa menos errores.
Conclusión: Con el marco de primavera: esta inyección de dependencia (DI) es útil para la gestión de la dependencia de objetos, lo que lo hace más elegante, altamente flexible y fácil de mantener en la gestión del desarrollo de grandes proyectos Java.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!