La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Patrones de Diseño: Command

Presentaciones similares


Presentación del tema: "Patrones de Diseño: Command"— Transcripción de la presentación:

1 Patrones de Diseño: Command
Oscar Sanz Merino Nicolas Moreno Ishii Alex Cuervo Faucha

2 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

3 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

4 Introducción. Command es un patrón de comportamiento.
Tambien conocido como Action, Transaction. Especifica una forma simple de separar la ejecución de un comando del entorno que generó dicho comando.

5 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

6 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

7 Intención Permite solicitar una operación a un objeto
sin conocer el contenido ni el receptor real de la misma. Encapsula un mensaje como un objeto, lo que permite gestionar: colas o registros de mensajes. el deshacer las operaciones realizadas. Ofrece una interfaz común que aporta: uniformidad al invocar las acciones. sencillez al extender el sistema con nuevas acciones.

8 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

9 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

10 Motivación. El concepto de orden (command) es ambiguo y complejo
pero está muy extendido. Podemos mencionar como ejemplos: intérpretes de órdenes del sistema operativo. lenguajes de macros de paquetes ofimáticos. gestores de bases de datos. protocolos de servidores de Internet. El patrón presenta una forma sencilla y versátil de implementar un sistema basado en comandos: facilidad de uso y ampliación.

11 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

12 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

13 Aplicaciones Se suele aplicar cuando se quiere:
Facilitar la parametrización de las acciones a realizar. Independizar el momento de petición del de ejecución. Implementar CallBacks. El parámetro de una orden puede ser otra orden a ejecutar. Soportar o permitir el "deshacer". Desarrollar sistemas utilizando órdenes de alto nivel que se construyen con operaciones sencillas (primitivas).

14 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

15 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

16 Estructura del patrón Command:

17 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

18 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

19 Participantes Orden: (“Command”)
declara una interfaz para ejecutar una operación. Orden Concreta: (“ConcreteCommand”) define un enlace entre un objeto “Receiver” y una acción. implementa “Execute” invocando la(s) correspondiente(s) operación(es) del “Receiver”. Cliente: (“Client”) crea un objeto “ConcreteCommand” y establece su receptor.

20 Participantes Invocador: (“Invoker”)
le pide a la orden que ejecute la petición. Receptor: (“Receiver”) sabe como llevar a cabo las operaciones asociadas a una petición. Cualquier clase puede hacer actuar como “Receiver”.

21 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

22 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

23 Colaboraciones El cliente crea un objeto “ConcreteCommand” y especifica su receptor. Un objeto “Invoker” almacena el objeto “ConcreteCommand” El invocador envia una petición llamando a “Execute” sobre la orden. Cuando las ordenes se pueden deshacer: “ConcreteCommand” guarda el estado para deshacer la orden antes de llamar a “Execute”. El objeto “ConcreteCommand”, invoca operaciones de su receptor para llevar a cabo la petición.

24 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

25 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

26 Consecuencias Orden desacoplada:
El objeto que invoca la operación de aquél que sabe como realizarla. Las órdenes son objeto de primera clase. Manipulados y extendidos de forma natural. Se pueden ensamblar órdenes en una orden compuesta. Es una instancia del patrón “Composite”. Facilidad de adición de nuevas órdenes. ¿Por que es debido esto? no hace falta cambiar las clases existentes.

27 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

28 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

29 Implementación Debemos tener en cuenta:
¿Como deberia ser de inteligente una orden? (ampl. conj. habilidades) Implementandolo todo ella misma, sin delegar nada en el receptor. Se define un enlace entre un receptor y las acciones que lleva a cabo la orden. Permitir deshacer y repetir. Evitar la acumulación de errores en el proceso de deshacer: A medida que se ejecutan y deshacen las órdenes repetidamente. El estado de la aplicación finalmente puede diferir de sus valores originales Uso de plantillas en un LP (Ejemplo: C++) Para evitar crear una subclase de Orden para cada clase de acción y receptor.

30 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

31 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

32 Código de ejemplo Ejemplo en Java: public interface Command{
void execute(); } public class CommandGenerarNominas implements Command{ Universidad _universidad; public CommandGenerarNominas(Universidad universidad){ _universidad = universidad; public void execute(){ _universidad.generarNominas();

33 Código de ejemplo (cont.)
Ejemplo en Java: public class MenuUniversidad { public boolean menuPrincipal(){ ... case 3: // generar nominas // _universidad.generarNominas(); Command comando; comando = new CommandGenerarNominas(_universidad); comando.execute(); break; }

34 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

35 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

36 Usos conocidos Las clases Button y MenuItem de Java:
Facilitan la utilización de este patrón. Declaran los métodos getActionCommand y setActionCommand para dar nombres a las acciones realizadas por los objetos. Facilitan una correspondencia entre ambos.

37 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

38 Índice Introducción. Intención. Motivación. Aplicabilidad. Estructura.
Participantes. Colaboraciones. Consecuencias. Implementación. Código de ejemplo. Usos conocidos. Patrones relacionados.

39 Patrones relacionados
Factory Method: Ofrece una forma alternativa de llamar a los órdenes además del uso del command manager. Intérprete: Se puede implementar un pequeño Intérprete mediante clases Command. Template Method: Sirve para implementar la lógica de “Deshacer” de forma automática. Composite y Prototype: Permite realizar agrupaciones de órdenes de forma similar a una macro. Hay quien lo utiliza para implementar la copia de la orden al histórico de órdenes.


Descargar ppt "Patrones de Diseño: Command"

Presentaciones similares


Anuncios Google