Strategy Flashcards

1
Q

Cuando se usa el patron Strategy?

A
  • Cuando necesito hacer algo pero de distintas maneras. Po ej.: Quiero correr pero de distintas maneras (trotando, a fondo, caminando, etc) o quiero trasladarme pero de distintas manera (en bici, auto, monopatín, etc).
  • Se desacopla una estrategia de la clase contexto. La clase contexto no es la responsable de elegir la estrategia.
  • El cliente es quien pasa la estrategia a la clase contexto.
  • Como una interfaz no puede tener atributos, los ubico en la otra clase contexto.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Como es el modelado del patron Strategy?

A

Supongamos que queremos modelar un documento que puede tener los atributos: nombre, titulo, etc. y la idea es desarrollar una funcionalidad para poder exportar el texto del doc en PDF, Word o TXT en cualquier momento (en tiempo de ejecución).

> El primer acercamiento para modelar esta problemática es hacer una clase que se llame Documento, con los atributos descriptos y el método exportar() donde voy a tener un código spagetti con condicionales y de acuerdo al formato elegido aplica un bloque de código.
> Una version mejorada seria hacer una herencia de documento, donde cada una implemente su propio metdo exportar.
»La ultima forma, la forma correcta, es aplicando el patron state de la siguiente manera:
- Se crea una interface TipoDocumento, de donde heredan los distintos tipos (TXT, PDF y Word).
- Los atributos quedan en la clase Documento que hace una composición con el tipoDocumento (tiene el atributo tipoDoc).
- El método exportar() en Documento hace un pasa-manos:
~~~
exportar(){
tipoDoc.exportar(this);
}
~~~
- El método exportar estara implementado en cada tipo de documento.

+ Si agregamos una nueva funcionalidad, agrego una clase que extiende de la interface y no es necesario tocar todo el código de documento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly