ej codigo patron proxy

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

ej codigo patron proxy

miguel agustin cardamone
Hola 

Necesito ayuda un codigo de ejemplo de patron proxy para smalltalk pharo

Gracias

Miguel

============================================================

Hello

I need help a sample pattern proxy code for smalltalk pharo

Thank you

Miguel

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
---
Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a [hidden email].
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/clubsmalltalk/cea3fa0c-2873-4320-9e4c-ed6f98bd5260o%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: ej codigo patron proxy

Juan-2
Miguel,

La forma más fácil de implementar un proxy es que la clase proxy implemente el mensaje doesNotUndestood como unico mensaje, en verdad, un proxy es un objeto que tiene basicamente
dos características, 1) que no tenga protocolo que no entienda ningún mensaje, 2) que tenga una manera de hacerle llegar los mensajes al objeto proxiado.
Para cumplir con la primera premisa, Pharo, tiene ProtoObject , un  root de classes que no cuelga de Object, porque de alguna manera Object sabe muchas cosas, y un proxy no debería,
Dado que en Smalltalk los Proxys son objects, esto nos lleva a la segunda premisa,hacerle llegar el mensaje o delegar en el objeto proxiado,alli la estrategia cambia, o podria ser mas compleja la relación entre el proxy y su objecto proxiado.
Aqui la forma mas sencilla es que Proxy tenga el mensaje doesNotUnderstood: aMessage, está
estrategia, está basada en algo llamado method lookup, que es como Smalltalk resuelve un mensaje,
Un objeto recibe un mensaje, se fija si en su clase lo puede contestar (si lo tiene implementado) sino delega a su super clase y sin no lo puede responder llegará a subiendo por la jerarquia a Object, object genera una excepcion y  le envia al receptor original del mensaje doesNotUnderstood: aMessage.
Entonces si implementas este mensaje podras enviarle cualquie mensaje a dicho objeto , en el colaborador aMessage   están todos los objetos necesarios para resolver el mensaje (receptor colaboradores enviados como "parametros"  etc).
Resumiendo el proxy es un objeto que proxea a otro. por ejemplo podrias tener 
proxy := Proxy for: onObjectToProxy.
ahora esto indica que el objeto a proxiar queda contenido en el proxy, de manera que el objeto proxy es el receptor de cualquier futuro mensaje. que puede ser cualquiera, entonces poniendole el mensaje doesNotUnderstood interceptas el mensaje y como resuelvas luego es cuestion de tu dominio.
Espero haberte sido útil ,cualquier otra cosa, pregunta.

saludos 
Juan Diaz Cortez

On Sun, Jun 14, 2020 at 1:42 PM miguel agustin cardamone <[hidden email]> wrote:
Hola 

Necesito ayuda un codigo de ejemplo de patron proxy para smalltalk pharo

Gracias

Miguel

============================================================

Hello

I need help a sample pattern proxy code for smalltalk pharo

Thank you

Miguel

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
---
Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a [hidden email].
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/clubsmalltalk/cea3fa0c-2873-4320-9e4c-ed6f98bd5260o%40googlegroups.com.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
---
Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a [hidden email].
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/clubsmalltalk/CAKizN9xHS98tKxJ_fLnmm6i%2BmAzN34HCCyLhZ17bYs5s%2BcTh3w%40mail.gmail.com.
pd
Reply | Threaded
Open this post in threaded view
|

Re: ej codigo patron proxy

pd
In reply to this post by miguel agustin cardamone

¿no te vale el ejemplo canónico de GoF que puedes ver por ej. en la wikipedia? https://en.wikipedia.org/wiki/Proxy_pattern

Básicamente un proxy es una clase que ejerce de "hombre en el medio" recibiendo los mensajes que luego reenvía a la clase adecuada, la forma más canónica de implementarlo es un clase (la proxy) que contiene una variable de instancia con la clase final (la clase real a llamar) de forma que cada vez que un objeto (el cliente) llama a un mensaje de la "clase final" en realidad está invocando un mensaje del proxy que a su vez envía un mensaje a la clase final (es el proxy quien decide quién es la clase final y no el cliente)

un ejemplo en smalltalk sería:

Object subclass: #MiProxy
instanceVariableNames: 'LaClaseFinal'
classVariableNames: ''
poolDictionaries: ''
category: 'UserObjects'

MiProxy >> m1

^LaClaseFinal m1.

Object subclass: #ClaseFinal
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'UserObjects'

ClaseFinal >> m1

  ^100 factorial.


Lo que te ha respondido Juan es una forma usual de hacerlo en Smalltalk aprovechando las características del lenguaje.

saludos

El domingo, 14 de junio de 2020, 18:42:46 (UTC+2), miguel agustin cardamone escribió:
Hola 

Necesito ayuda un codigo de ejemplo de patron proxy para smalltalk pharo

Gracias

Miguel

============================================================

Hello

I need help a sample pattern proxy code for smalltalk pharo

Thank you

Miguel

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
---
Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a [hidden email].
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/clubsmalltalk/90677d96-f2da-49a2-8365-d8f3b9d92139o%40googlegroups.com.