{"id":580,"date":"2011-03-08T19:09:22","date_gmt":"2011-03-09T01:09:22","guid":{"rendered":"http:\/\/198.27.101.129\/blog\/itzcoaltam\/?p=580"},"modified":"2011-03-08T19:09:22","modified_gmt":"2011-03-09T01:09:22","slug":"inyeccion-de-dependencias","status":"publish","type":"post","link":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/inyeccion-de-dependencias\/","title":{"rendered":"Inyecci\u00f3n de Dependencias"},"content":{"rendered":"<p>Durante los \u00faltimos d\u00edas he estado investigando algunos conceptos que se encuentran relacionados con algunos frameworks de trabajo.\n<\/p>\n<p>En este caso, hablaremos de Inyecci\u00f3n de Dependencias.\n<\/p>\n<p><strong>Problem\u00e1tica<\/strong>.\n<\/p>\n<p>Durante el desarrollo orientado a objetos, es com\u00fan la creaci\u00f3n de un objeto nuevo, dentro de la definici\u00f3n de otro, ejemplo:\n<\/p>\n<p>Public class Clase1 {\n<\/p>\n<p>Private clase2 objeto2;\n<\/p>\n<p>Public Clase1 (){\n<\/p>\n<p style=\"margin-left: 36pt\">\/\/ constructor\n<\/p>\n<p style=\"margin-left: 36pt\">This.objeto2=new clase2();\n<\/p>\n<p>}\n<\/p>\n<p>}\n<\/p>\n<p>\n\u00a0<\/p>\n<p>Aun cuando el c\u00f3digo es correcto, y se logra acceder a los m\u00e9todos de objeto2 desde  los m\u00e9todos del objeto1, si el objeto 1 es instanciado en una gran cantidad de ocasiones, por definici\u00f3n el objeto 2 tambi\u00e9n lo ser\u00e1, imaginen que el objeto 2 en su constructor abre una conexi\u00f3n a una base de datos, existir\u00e1 en su momento, tantas conexiones a bases de datos abiertas, como instancias del objeto1 y de los que hayan tomado a este como base para ser heredado.\n<\/p>\n<p>Esto representa un problema serio, puesto que podemos llegar a tirar el servidor de bases de datos, am\u00e9n de no ser correcto.\n<\/p>\n<p><strong>Solucion:<br \/>\n<\/strong><\/p>\n<p>Para este caso, se puede implementar la inyecci\u00f3n de dependencias.\n<\/p>\n<p>Ejemplo 2:\n<\/p>\n<p>\n\u00a0<\/p>\n<p>public class Clase {\n<\/p>\n<p>private Clase2 objeto2;\n<\/p>\n<p>public Clase(){\n<\/p>\n<p>\/\/constructor\n<\/p>\n<p>}\n<\/p>\n<p>public void setObjeto2(Clase2 objeto2){\n<\/p>\n<p style=\"margin-left: 36pt\">this.objeto2 = objeto2;<br \/>}\n<\/p>\n<p>}\n<\/p>\n<p>Como se pueden dar cuenta, el truco en este caso consiste en la creaci\u00f3n del objeto 2, la cual no se realiza dentro de la definici\u00f3n del objeto 1, si no que esta (la instancia del objeto 2) es pasada al objeto uno por medio de una funci\u00f3n SET (setObjeto2).\n<\/p>\n<p>De esta forma, no caemos en el problema definido anteriormente.\n<\/p>\n<p>\n\u00a0<\/p>\n<p>Un Framework de trabajo que implementa Inyecci\u00f3n de dependencias con \u00e9xito es Spring, existen versiones tanto para java como para .net\n<\/p>\n<p>\n\u00a0<\/p>\n<p>\n\u00a0<\/p>\n<p>\n\u00a0<\/p>\n<p>\n\u00a0<\/p>\n<p>\n\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Durante los \u00faltimos d\u00edas he estado investigando algunos conceptos que se encuentran relacionados con algunos frameworks de trabajo. En este caso, hablaremos de Inyecci\u00f3n de Dependencias. Problem\u00e1tica. Durante el desarrollo orientado a objetos, es com\u00fan la creaci\u00f3n de un objeto nuevo, dentro de la definici\u00f3n de otro, ejemplo: Public class Clase1 { Private clase2 objeto2; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-580","post","type-post","status-publish","format-standard","hentry","category-vida"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/posts\/580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/comments?post=580"}],"version-history":[{"count":0,"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/posts\/580\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/media?parent=580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/categories?post=580"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.joiz.net\/blog\/itzcoaltam\/wp-json\/wp\/v2\/tags?post=580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}