Proxy_271597

Post on 18-Nov-2015

13 views 0 download

Transcript of Proxy_271597

Josue Benjamin Guerrero Rascon 271597Maestra:Yesica Olivia Ruiz Holguin Diseo de SW de bajo nivel

UnpatrnProxyes un patrn estructural que tiene comopropsitoproporcionar unsubrogado o intermediariode un objeto para controlar su acceso.Para explicar lamotivacindel uso de este patrn veamos un escenario donde su aplicacin sera la solucin ms adecuada al problema planteado. Consideremos un editor que puede incluir objetos grficos dentro de un documento. Se requiere que la apertura de un documento sea rpida, mientras que la creacin de algunos objetos (imgenes de gran tamao) es cara. En este caso no es necesario crear todos los objetos con imgenes nada ms abrir el documento porque no todos los objetos son visibles. Interesa por tanto retrasar el coste de crear e inicializar un objeto hasta que es realmente necesario (por ejemplo, no abrir las imgenes de un documento hasta que no son visibles). Lasolucinque se plantea para ello es la de cargar las imgenes bajo demanda. Pero, cmo cargar las imgenes bajo demanda sin complicar el resto del editor? La respuesta es utilizar un objetoproxy. Dicho objeto se comporta como una imagen normal y es el responsable de cargar la imagen bajo demanda.

El patrnproxyse usa cuando se necesita una referencia a un objeto ms flexible o sofisticada que un puntero. Dependiendo de la funcin que se desea realizar con dicha referencia podemos distinguir diferentes tipos deproxies: proxyremoto: representante local de un objeto remoto. proxyvirtual: crea objetos costosos bajo demanda (como la claseImagenProxyen el ejemplo de motivacin). proxyde proteccin: controla el acceso al objeto original (ejemplo deproxyde proteccin:[1]) proxyde referencia inteligente: sustituto de un puntero que lleva a cabo operaciones adicionales cuando se accede a un objeto (ej. contar nmero de referencias al objeto real, cargar un objeto persistente bajo demanda en memoria, control de concurrencia de acceso tal como bloquear el objeto para impedir acceso concurrente, ).

El uso de unproxyintroduce un nivel de indireccin adicional con diferentes usos: Unproxyremotooculta el hecho de que un objeto reside en otro espacio de direcciones. Unproxyvirtualpuede realizar optimizaciones, como la creacin de objetos bajo demanda. Elproxyde protecciny lasreferencias inteligentespermiten realizar diversas tareas de mantenimiento adicionales al acceder a un objeto.