Data Model & Singleton pattern

1,283 views

Published on

Presenta qué es y las ventajas de los patrones de Modelo de datos y que sea singleton.

Published in: Education, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,283
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Data Model & Singleton pattern

  1. 1. Data Model Singleton pattern Ricardo Poblete Jara Flex, Actionscript3
  2. 2. Agenda <ul><li>Razones </li></ul><ul><li>Objetivos </li></ul><ul><li>MVC . Capa de vista y de modelo. </li></ul><ul><li>Data Model </li></ul><ul><li>Patrón Singleton </li></ul><ul><li>Práctica </li></ul>
  3. 3. Razones
  4. 4. Razones <ul><li>¿Por qué? </li></ul><ul><ul><li>Al particionar la aplicaciones en componentes, se hace mas difícil comunicar información entre estos. </li></ul></ul><ul><ul><li>Cada componente busca sus propios datos. </li></ul></ul><ul><ul><ul><li>Implicando nuevas conexiones </li></ul></ul></ul><ul><ul><ul><li>En un módulo, un set de componentes están asociados a un conjunto de datos particular. </li></ul></ul></ul><ul><li>¿Quiénes participan? </li></ul><ul><ul><li>Componentes y el modelo de datos </li></ul></ul>
  5. 5. Objetivos
  6. 6. Objetivos <ul><li>General </li></ul><ul><ul><li>Conceptualizar y Comprender el modelo de datos en AS3 para generar componentes de alta comunicación. </li></ul></ul><ul><li>Específico </li></ul><ul><ul><li>Capacidad de conceptualizar el modelo de datos </li></ul></ul><ul><ul><li>Fabricar propios modelos </li></ul></ul><ul><ul><li>Seguir incorporando el concepto MVC (Modelo, Vista, Controlador) dentro de la aplicación. </li></ul></ul>
  7. 7. Model View Controller (I) Capa de vista
  8. 8. Model View Controller (I) Capa de Modelo
  9. 9. Modelo de datos (Model)
  10. 10. Data Model <ul><li>Concentra la información de un módulo de la aplicación. </li></ul><ul><li>Mantiene el estado del cliente </li></ul><ul><li>Almacena los Value Objects </li></ul>
  11. 11. Value Object <ul><li>Representan “Objetos” conceptuales del dominio. </li></ul><ul><li>Pueden representar: Persona, Auto, Item, Cuenta corriente, Dirección, etc. (en singular) </li></ul><ul><li>Físicamente es una clase que administra datos. </li></ul>
  12. 12. Value Object (II) <ul><li>Ejemplo </li></ul><ul><ul><ul><ul><ul><li>package model </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>{ </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[Bindable] </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public class ContactoVO </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>{ </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var nombre:String; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var email:String; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var telefono:String; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var descripcion:String; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul>
  13. 13. Data Model (II) <ul><li>El modelo apoya con la información que muestran las interfaces (Vistas) </li></ul><ul><li>Físicamente es una clase. </li></ul><ul><li>Principalmente tiene propiedades donde almacena los datos. </li></ul><ul><ul><li>Cuentas Corrientes (un array de cuenta corriente VO) </li></ul></ul><ul><ul><li>Direcciones (un array de direcciones de alguien) </li></ul></ul><ul><ul><li>Usuario conectado </li></ul></ul><ul><ul><li>Estado visible de la aplicacción. </li></ul></ul>
  14. 14. Data Model (III) <ul><li>Ejemplo </li></ul><ul><ul><ul><ul><ul><li>package model </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>{ </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>import mx.collections.ArrayCollection; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[Bindable] </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public class ModeloEjemplo </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>{ </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var fechaActual:String; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var Contactos:ArrayCollection; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var contactoSeleccionado:ContactoVO; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var BandejaSalida:ArrayCollection; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>public var correoSeleccionado:CorreoVO; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul></ul>
  15. 15. Singleton
  16. 16. Singleton <ul><li>El patrón de diseño singleton (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase. </li></ul><ul><li>Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella. </li></ul><ul><li>Es útil en el modelo de datos, ya que este centraliza los datos de nuestra aplicación </li></ul><ul><li>Tiene desventajas, no abusar </li></ul>
  17. 17. Singleton (II) <ul><li>Ejemplo </li></ul><ul><ul><ul><li>// Singleton class: </li></ul></ul></ul><ul><ul><ul><li>package model{ </li></ul></ul></ul><ul><ul><ul><li>public class SingletonClass { </li></ul></ul></ul><ul><ul><ul><li>private static var instance:SingletonClass; </li></ul></ul></ul><ul><ul><ul><li>private static var allowInstantiation:Boolean; </li></ul></ul></ul><ul><ul><ul><li>public static function getInstance():SingletonClass { </li></ul></ul></ul><ul><ul><ul><li>if (instance == null) { </li></ul></ul></ul><ul><ul><ul><li>allowInstantiation = true; </li></ul></ul></ul><ul><ul><ul><li>instance = new SingletonClass(); </li></ul></ul></ul><ul><ul><ul><li>allowInstantiation = false; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>return instance; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>public function SingletonClass():void { </li></ul></ul></ul><ul><ul><ul><li>if (!allowInstantiation) { </li></ul></ul></ul><ul><ul><ul><li>throw new Error(&quot;Error: Instantiation failed: Use SingletonClass.getInstance() instead of new.&quot;); </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  18. 18. Práctica
  19. 19. Práctica - Ejercicio <ul><ul><li>Funcionalidad </li></ul></ul><ul><ul><ul><li>Fabricar una mini aplicación que permita tener una lista de contactos, donde almacene (nombre, email telefono y descripcion), que permita sólo agregar nuevos. </li></ul></ul></ul><ul><ul><ul><li>Además les puedo enviar emails, por lo que seleccionando un contacto de la lista puedo enviarle un correo y finalmente pueda ver mi bandeja de salida los mensaje que he enviado. </li></ul></ul></ul>
  20. 20. Práctica (II) <ul><li>Generar los siguientes elementos </li></ul>
  21. 21. DetalleContacto.mxml
  22. 22. ListaContactos.mxml
  23. 23. Agregando un nuevo contacto
  24. 24. Main.mxml
  25. 25. EnvioCorreo.mxml
  26. 26. BandejaSalida.mxml
  27. 27. Enviando un correo
  28. 28. Correo enviado
  29. 29. FIN

×