Los ValueObjects son indispensables al momento de trabajar con MVC o sin el :) .

Voy a tratar hacer una definición de los ValueObjects sin ser muy técnico. de ahora en adelante al usar VO me estaré refiriendo a los ValueObjects. Los puntos mas importantes de los VO son:

  1. Los VO son contenedores de información representada por una clase individual.
  2. Los VO son serializables, es decir, pueden ser enviados entre un servidor y un cliente mantenido sus propiedades.

Imaginemos que vamos a hacer un listado de mensajes para un guestbook, pero no sabemos quien, que o como nos van a proveer la información, lo único sabemos son los atributos que contendrá cada mensaje, estos son:

  • idUnique
  • author
  • url
  • content

Los mensajes siempre contendrán estas propiedades vengan de donde vengan.

Según el punto 1 esta información es representada por una clase individual entonces como nuestro cliente será hecho el FLEX creamos nuestro clase en AS3 la cual representara nuestros VO en el cliente.

[as]

package com.klr20mg.pureMVC.guestbook.model.vo
{
[RemoteClass(alias="MessagesVO")] [Bindable] public class MessagesVO
{
public var idUnique:String;
public var author:String;
public var url:String;
public var content:String;
public function MessagesVO(author:String=null, url:String=null, content:String=null)
{
this.idUnique = “”
this.author = author;
this.url = url;
this.content = content;
}
}
}

[/as]

Hay 2 formas comunes de “poblar” los VO mediante el constructor, como en este ejemplo o mediante getters y setters, yo prefiero la primera.

Ahora vamos crear un VO a partir de la clase anterior

[as]

package com.klr20mg.pureMVC.guestbook
{
import com.klr20mg.pureMVC.guestbook.model.vo.MessagesVO
public class someClass
{
public function someClass()
{
var miVO:MessagesVO = new MessagesVO(“Tmeister”, “http://tmeister.net”, “Este es un mensaje de prueba”);
trace(miVO)
}
}
}

[/as]

Con esto hemos creado un VO de acuerdo a la primera clase.

Los VO son “compatibles” entre el cliente y el servidor según el punto numero 2, y al usar AMFPHP, WebOrb entre otros podemos enviar arrays de VO’s entre el server y el cliente sin ningún problema, pero entonces debemos de crear nuestros VO’s en el servidor en este caso usando PHP para poder “mapear” esta información.

[php]

class MessagesVO
{
public $idUnique;
public $author;
public $url;
public $content;

public function MessagesVO()
{
}
public function mapObject($data)
{
$this->idUnique = $data["idUnique"];
$this->author = $data["author"];
$this->url = $data["url"];
$this->content = $data["content"];
}
}
?>

[/php]

Como pueden ver es el mismo concepto encapsular la información en una clase.

Con esto, repito, no importa si la información viene de archivos de texto, de un webservice, de una base de datos, siempre podremos almacenar, consultar y modificar la información mediante nuestros VO’s.

Espero que con esto quede claro que son y para que usan los ValueObjects

Saludos :)

La Teoría

PureMVC es un framework open source que implementa el modelo MVC para crear aplicaciones usando ActionScript 3 bajo Flash CS3 y Flex, creado originalmente por Cliff Hall .

Dentro de los planes de desarrollo podemos encontrar que se intenta implementar este framework en diversos lenguajes de programación, tales como:

  • ActionScript 2
  • ColdFusion
  • CSharp
  • Java
  • Perl
  • PHP
  • Python
  • Ruby

Al implementar el patrón MVC (Modelo-Control-Vista) podemos separar los datos de la aplicación, las vistas (Interfaz de usuario) y la lógica de control en tres “componentes”, para poder reutilizar código y sobre todo hacer nuestras aplicaciones escalabres y mantenibles.

PureMVC separa estos 3 componentes en 3 “actores” dentro del framework:

  • Proxies
  • Mediators
  • Commands

En donde:

Los datos, remotos o locales son manejados por los Proxies.
Las vistas o interfaz de usuario, son manejados por los Mediators.
La lógica de la aplicación es manejada por los Commands los cuales pueden interactuar con los Proxies, los Mediators y pueden activar o ejecutar otros Commands.

Existe un cuarto elemento en PureMVC llamado Facade el cual provee una interfaz simple de comunicación para que los 3 actores principales puedan comunicarse entre sí. Además de que PureMVC implementa un esquema de notificaciones (Eventos) mediante los cuales se puede activar/ejecutar una o varias acciones.

Read Full Article →

Últimamente me he interesado en el tema de los patrones de diseño, para ser exacto en el patrón MVC.

Comencé a buscar frameworks que implementaran este patrón en AS3 de la lista de unos 7 frameworks que encontré por ahí hay 2 que desde mi punto de vista son los más completos.

Al estar investigando sobre el tema encontré realmente muy poca información en español así que:

Este post es la introducción a una serie de 5 posts en donde hablare sobre el tema, dicha serie constara, de una pequeña introducción sobre cada framework, crear una aplicación de ejemplo que podrá ser usada en el mundo real con los dos diferentes frameworks, este ejemplo será un guestbook creado en Flex3 que utilizara AMFPHP y MySQL como backend y no el clásico “hello world”, y por último la conclusión, pros y contras de estos dos frameworks.

Serie MVC implementado a ActionScript 3

Asi que estén al tanto :)

Follow me through my day

Send requests or questions about my products, find out on what I'm working and stay tune with my updates or just say hello ;)

Array

@Tmeister

active