Escuchando la razón: El Patrón Observer en Swift ("Listening to Reason: The Observer Pattern in Swift")

3b2a2e7b1e948037335c9468b6e8d9e8?s=47 Ariel Elkin
June 01, 2017
49

Escuchando la razón: El Patrón Observer en Swift ("Listening to Reason: The Observer Pattern in Swift")

3b2a2e7b1e948037335c9468b6e8d9e8?s=128

Ariel Elkin

June 01, 2017
Tweet

Transcript

  1. None
  2. El Patrón Observador en Swift Ariel Elkin

  3. Agenda 1. Teoría 2. Implementaciones a. NSNotificationCenter b. Swift puro

  4. Teoría

  5. Teoría • “Observador es un patrón de diseño que define

    una dependencia del tipo uno-a-muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, notifica este cambio a todos los dependientes.”
  6. El Patrón Observador es una de las maneras de definir

    la relación entre Modelo, Vista y Controlador (MVC)
  7. Teoría Sujeto agregar(Observador) desatar(Observador) notificar() Observador actualizar()

  8. Implementaciones:
 NotificationCenter

  9. None
  10. None
  11. • Mantenimiento de una lista de NSNotification.Name • Imposibilidad de

    definir tipos de notificaciones • No sabemos quienes son los observadores Desventajas de NotificationCenter
  12. Implementaciones:
 Swift puro

  13. None
  14. None
  15. None
  16. None
  17. None
  18. None
  19. Agregar una variable id a la interfaz de los observadores:

    O bien esperar que lleguen los “existentials"
  20. • Tipado fuerte • Control de la definición de Eventos

    • Control del despacho de Eventos • Sabemos quienes son los observadores Ventajas
  21. • Los observadores tienen que ser clases o bien tener

    atributos públicos identificadores • Manejo manual de las referencias fuertes a los Observadores Desventajas
  22. None
  23. Gracias!

  24. Preguntas? ariel@arivibes.com @AriVocals arielelkin.github.io

  25. Fuentes • Design Patterns. The “Gang of Four” • Advanced

    Swift. Chris Eidhof, Ole Begemann and Airspeed Velocity • Pro Design Patterns in Swift. Adam Freeman • NSNotification & NSNotification Center. Mattt Thompson