En la realización de los principios de la COI y el marco COI

Un concepto de mecanismo de reflexión

Consideramos un escenario, si ejecutamos el programa, un miembro del objeto que desea ver las propiedades que poseen, ¿cómo funciona?

Entonces considerar otro escenario, si queremos obtener información acerca de una clase de la clase en tiempo de ejecución como sus propiedades, constructores, enfoque general y considerará la oportunidad de crear sus objetos, esta situación cómo hacerlo? Ahí es donde la reflexión!

Nos .java archivo después de la compilación se convertirá en el archivo .class, es como un espejo en sí es .java, .class en el espejo es, de hecho, son los mismos;

Así mismo modo, vemos el reflejo en el espejo es .class, será capaz de descompilar, aprendí archivo .java los verdaderos colores.

Para el concepto de reflexión, dado el oficial: La reflexión es una característica del lenguaje Java, que permite que el programa en tiempo de ejecución (nota no el tiempo de compilación) para llevar a cabo el auto-examen y los miembros de la operación interna.

Por ejemplo: Permite una clase Java para obtener todas sus variables y métodos miembros y se muestra.

medios reflectores primarios pueden acceder al programa, la capacidad de detectar y modificar su propio estado o comportamiento, y de acuerdo con el estado de su comportamiento y resultados, ajustado o modificado como se describe en el estado de la aplicación y asociado semántica de comportamiento.

En Java, sólo para nombrar una clase dada, entonces se puede obtener toda la información a la clase a través de la reflexión.

Java se refleja en una poderosa herramienta que nos permite crear fácilmente el código flexibles, código de montaje se puede ejecutar de nuevo cuando, sin vínculos de código fuente entre los componentes.

Pero la alta reflexión de forma incorrecta puede costar! ¿Qué tipo de información se puede obtener mediante el reflejo de lo que la información, pero la premisa es la necesidad de conocer el nombre de la clase.

PAPEL mecanismo de reflexión

1. Analizar cualquier objeto pertenece a la clase en tiempo de ejecución;

2. Obtener la clase de objeto en tiempo de ejecución;

3. java acceder a los objetos en las propiedades de tiempo de ejecución, los métodos, el método de construcción y similares.

Debemos saber primero por qué el uso de reflexión? No crea directamente los objetos que contiene, sin embargo, que implica la dinámica y concepto estático.

Compilado estáticamente: determinado en el tipo de tiempo de compilación, objetos de unión, a saber, a través de.

La compilación dinámica: determinar el tipo de marcha, objetos vinculante . Dinámicamente compilado de Java maximizar la flexibilidad, el polimorfismo refleja la aplicación, hay que reducir el acoplamiento entre las clases.

III. Ventajas y desventajas de la reflexión

Reflexión ventaja: se pueden crear objetos dinámicos y compilado, lo que refleja la gran flexibilidad (especialmente en el desempeño de su flexibilidad es evidente en el desarrollo de J2EE).

Podemos obtener una variedad de clases de contenido, descompilar través de la reflexión. compilador de lenguaje JAVA para la primera carrera de este, el mecanismo de reflexión puede hacer que el código sea más flexible y fácil de poner en práctica orientada a objetos.

Por ejemplo:

Un software a gran escala, es imposible poner un diseño perfectamente, después de este programa para recopilar, publicar y cuando se encuentran necesario actualizar algunas funciones, no podemos querer a los usuarios desinstalar la anterior re-instalar el nuevo versión,

Si es así, este software es, sin duda, no muchas personas lo utilizan. Estática, entonces, la necesidad de volver a compilar el programa completo se puede lograr solamente una vez la función de actualización, mientras que el uso de la reflexión, entonces no se puede desinstalar,

Sólo necesita para crear de forma dinámica y de compilación, puede conseguir esta funcionalidad en tiempo de ejecución.

Desventaja de reflexión: el impacto en el rendimiento. El uso de la reflexión es básicamente una operación de interpretación, podemos decir que la JVM, ¿qué es lo que queremos hacer y dejar que se conoce a nuestros requerimientos. Tales operaciones son siempre más lento que realice directamente la misma operación.

El análisis técnico de cuatro contenedor .IOC

COI técnica más básica es la "reflexión (Reflexión)" programación, términos populares es generar dinámicamente el objeto basado en el nombre de la clase dada (cadena de caracteres), que permite el modo de programación sólo cuando el objeto generado se determina en el final qué tipo de objeto.

Sólo para ser producido en definiciones de objetos Spring dadas en el archivo de configuración, el propósito es mejorar la flexibilidad y facilidad de mantenimiento.

Actualmente C #, Java y otros lenguajes reflexión soporte PHP5, que los libros técnicos PHP5, también se traduce a veces como "mapeo". El concepto y el uso de la reflexión, que debe ser muy clara.

Aplicación de la reflexión es muy amplio, muchos marcos maduros, como Java, Hibernate, Spring Framework, NHibernate en .Net, Spring.NET marco es la "reflexión", como la mayoría de las técnicas básicas.

La tecnología reflectante apareció realmente muy temprano, pero ha sido ignorada, no se está utilizando más. Reflejando el modo de programación el tiempo con respecto a la normal a la manera lenta generación de objetos al menos 10 veces.

La tecnología actual a través de mejoras reflexión optimizadas, está bien establecida, y por lo general genera un objeto en el modo de generación objeto reflexión, la velocidad tiene poca diferencia, alrededor de 1-2 veces la brecha.

Podemos trabajar de modo contenedores COI visto como una sublimación del modelo de fábrica, puede ser visto como una fábrica de contenedor COI, esta fábrica a los objetos producen se definen en el archivo de configuración se da,

Luego, utilizando el lenguaje de programación proporciona el mecanismo de reflexión para formar el correspondiente nombre de clase de objeto determinado en el archivo de configuración. Desde el punto de vista de la implementación, la COI se pone antes de que el método de fábrica para escribir la generación de código objeto muerto,

Al cambiar el archivo de configuración para definir, es decir, la planta genera tanto independientes como objetos separados por, el propósito es mejorar la flexibilidad y facilidad de mantenimiento.

Cinco .IOC alias: inyección de dependencias (DI) 

En 2004, Martin Fowler discute el mismo problema, ya que el COI es Inversión de Control, a continuación, al final es "lo que se invierte el control de él?", Y después de la manifestación después de un análisis detallado,

Él tiene la respuesta: "el proceso de obtención de objeto dependiente se invierte." Después de que el control se invierte, el proceso de obtención de sus objetos dependientes de la gestión activa se convierte inyecta desde el recipiente COI.

Por lo que "la inversión de control" tomó un nombre más apropiado es "inyección de dependencias (inyección de dependencias)". Su respuesta, de hecho, muestra cómo lograr el COI: la inyección.

El llamado inyección de dependencia, es decir, el contenedor COI durante el funcionamiento, dependencias dinámicas inyecta en ciertos objetos.

Por lo tanto, la inyección de dependencias (DI) y control inverso (COI) se describen desde ángulos diferentes de la misma cosa, que se refiere a la introducción de contenedor COI por medio de la inyección de dependencia, de desacoplamiento entre los objetos.

Unos seis productos de contenedores .IOC

COI contenedor bajo el sol sistema de una tecnología son: hay un resorte ligero, Guice, Pico de contenedores, Avalon, HiveMind; peso pesado tiene el EJB;

No la luz no pesado JBoss, Jdon y así sucesivamente son. Spring Framework como uno de los tres mosqueteros, medianos y pequeños proyectos en desarrollo de Java SSH (Struts, Spring, Hibernate) están en uso, muy maduro y ampliamente utilizado,

EJB también se utiliza en proyectos industriales críticos, como los servicios de telecomunicaciones determinados.

COI contenedor bajo el sistema de tecnología .Net tiene: Spring.Net, Castillo y así sucesivamente. Spring.Net es un trasplante de la primavera de programación Java sobre el contenedor COI, el castillo de Windsor es parte del contenedor COI.

Son marco ligero, más maduro, que Spring.Net se ha utilizado cada vez más en diversos proyectos.

VII. El uso de un marco COI debería prestar atención a lo

El uso de un marco COI productos puede traer grandes beneficios a nuestro proceso de desarrollo, pero también plenamente consciente de las deficiencias con marco COI, tener en cuenta, a prevenir el abuso marco.

1. Sistema de software debido a la introducción de terceros contenedor COI, el paso de generar objetos se convierten en algo complicado, que podría haber sido algo entre los dos, pero nada fuera de un procedimiento, por lo que acaba de comenzar con el marco de tiempo de la COI, sentir el sistema se vuelve menos intuitivo.

    Por lo tanto, la introducción de un nuevo marco, se incrementará el costo de aprendizaje y los miembros del equipo de entrenamiento conocido, y después de la operación y mantenimiento, los nuevos operadores han tenido que hacer el mismo cuerpo de conocimientos.

2. A medida que el objeto es generado por modo de reflexión contenedor COI, una cierta pérdida de la eficiencia operativa. Si usted quiere perseguir la eficiencia operativa, debe sopesarse frente a esto.

3. COI marco específico para el producto (como la primavera) se refiere, se requiere mucho trabajo de preparación, más complicada, para algunos proyectos pequeños, el objetivo también es probable que aumente el costo de algunos de los trabajos.

4.IOC esquema de madurez del producto en sí necesita ser evaluado, si se introduce un producto inmaduro marco COI, que afectará a la totalidad del proyecto, por lo que este es un riesgo oculto.

Podemos concluir que más o menos: Algunos proyectos pequeños o producto de trabajo, no es adecuado para los productos marco de utilización del COI. Además, si la falta de conocimiento y la capacidad de los miembros del equipo, marco COI por la falta de conocimiento profundo del producto, y no se apresure a introducir.

Por último, con especial énfasis en la eficiencia del proyecto o producto, no es adecuado para la introducción de productos marco COI, como es el sitio web del caso WEB 2.0.

 

Supongo que te gusta

Origin www.cnblogs.com/ZJOE80/p/12606458.html
Recomendado
Clasificación