Ejemplos

Previamente tenés que tener instalado el entorno.

Todos los ejemplos están escritos para la versión 2.20 (la última versión de Xtend al 01/03/2020) y están "mavenizados".

Te dejamos las instrucciones de instalación que son bastante simples. Si encontrás un error, mandá un mail a tu docente amigo así lo corregimos.

Iniciales

Implementación de patrones

  • Manejo de proyectos: Strategy, Composite, Instancias o clases.
  • Clientes de una tarjeta de crédito: existen varios branches que muestran diferentes conceptos
    • if: agrega las condiciones comerciales con ifs
    • strategy: las condiciones comerciales se implementan como strategies
    • decorator: decora al cliente para implementar las condiciones comerciales. Instancia mediante un Builder.
    • decorator-strategies: decora las condiciones comerciales que son strategies. Instancia mediante un Builder.
  • Lista de correo: Strategy, Observer, Testing con Stubs y Mocks, Dependency Injection, Decorator, Uso de bloques con Builders.
    • simple: versión simplificada del ejercicio sin observers
    • master: trabaja la inyección de dependencias del MessageSender en el constructor del MailObserver
    • singleton: el componente que envía mails es un Singleton y esto hace fallar los tests.
    • service-locator: implementa el patrón arquitectural Service Locator para desacoplar el envío de mensajes de la aplicación.
    • hay dos branches más para los interesados en profundizar conceptos: strategy-bloques que muestra cómo armar objetos bloques para validar tipos de envío y tipos de suscripción y decorator que decora la lista de correo para validar envíos restringidos.
  • Microprocesador: Command, Composite, Patrones creacionales, Uso de bloques.
    • simple: primera parte del ejercicio. Command pattern.
    • creacionales: segunda parte del ejercicio (builder de un programa, y un iterador de instrucciones que utiliza un mapa para transformar un entero en un command)
    • factories: resuelve la parte creacionales con un mapa de factories de instrucciones que tiene una jerarquía separada de instrucciones.
    • bloques: cada instrucción se modela como un bloque de código o closure en lugar de subclasificar el command.
  • Máquina de Helado: Command, Adapter, Builder, Testing con Stubs y Mocks.
  • Selección de personal: Double dispatch, Extension method.
    • double-dispatch: trabaja con method dispatch de xtend (recomendado para ver)
    • dispatch: trabaja con double dispatch manual

Testeo con Stubs y Mocks

Refactoring