2_3_6  Patrón de Diseño Estrategia ( Strategy )  Apoyo SSD3
Introducción <ul><li>El patrón de diseño Estrategia ( Strategy ) es más difícil de entender que el patrón de diseño Singul...
<ul><li>Considera un sistema de comercio electrónico que soporta ventas en Estados Unidos, México y Canadá. </li></ul><ul>...
<ul><li>El sistema debe saber cómo calcular el impuesto de la venta para los clientes de los tres países, cada uno de los ...
<ul><li>En una solución basada en el patrón de diseño Estrategia, el código para calcular el impuesto de las ventas en Est...
 
<ul><li>La interfaz  TaxCalculator  declara el método  calculateTax .  </li></ul><ul><li>Las clases que implementan la int...
<ul><li>Si se agrega un país al sistema, se crea una nueva clase que encapsula las reglas del impuesto de ventas para dich...
Definición <ul><li>El libro  Design Patterns (Patrones de Diseño)  describe el  patrón de diseño Estrategia  con las sigui...
Definición de  Strategy <ul><li>En el patrón de diseño  Estrategia , cada algoritmo es encapsulado en su propia clase. </l...
Aplicación de  Strategy <ul><li>Las aplicaciones donde el patrón de diseño Estrategia puede resultar útil son: </li></ul><...
Aplicación de  Strategy <ul><li>Un algoritmo puede ser considerado una estrategia y de ahí el origen del nombre del patrón...
 
En el patrón de diseño Estrategia: <ul><li>La interfaz Strategy define la firma del método que será utilizado para llamar ...
Ejemplo <ul><li>El siguiente diagrama de clase muestra una mejora al sistema de la biblioteca.  </li></ul><ul><li>Esta mej...
 
Más información <ul><li>Para ver la implementación y detalle en código usando Strategy, revisar la sección 2.3.6 del mater...
Upcoming SlideShare
Loading in …5
×

2 3 6 Patron De DiseñO Estrategia (Strategy)

5,364 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,364
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
107
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2 3 6 Patron De DiseñO Estrategia (Strategy)

  1. 1. 2_3_6 Patrón de Diseño Estrategia ( Strategy ) Apoyo SSD3
  2. 2. Introducción <ul><li>El patrón de diseño Estrategia ( Strategy ) es más difícil de entender que el patrón de diseño Singular ( Singleton ) porque utiliza interfaces y polimorfismo. </li></ul>
  3. 3. <ul><li>Considera un sistema de comercio electrónico que soporta ventas en Estados Unidos, México y Canadá. </li></ul><ul><li>En un futuro cercano, la base de clientes será expandida para incluir países de Sudamérica. </li></ul>
  4. 4. <ul><li>El sistema debe saber cómo calcular el impuesto de la venta para los clientes de los tres países, cada uno de los cuales tiene sus propias reglas para calcular el impuesto de la venta. </li></ul><ul><li>El diseño del código para calcular el impuesto de la venta debe ser flexible, de modo que resulte fácil agregar otros países. </li></ul>
  5. 5. <ul><li>En una solución basada en el patrón de diseño Estrategia, el código para calcular el impuesto de las ventas en Estados Unidos es encapsulado en su propia clase, al igual que el código para Canadá y México </li></ul>
  6. 7. <ul><li>La interfaz TaxCalculator declara el método calculateTax . </li></ul><ul><li>Las clases que implementan la interfaz TaxCalculator acceden a definir el método calculateTax . </li></ul><ul><li>La complejidad del código del impuesto de venta se reduce separándolo en tres clases. </li></ul>
  7. 8. <ul><li>Si se agrega un país al sistema, se crea una nueva clase que encapsula las reglas del impuesto de ventas para dicho país. </li></ul><ul><li>La nueva clase implementa la interfaz TaxCalculator y defina su propia versión del método calculateTax . </li></ul>
  8. 9. Definición <ul><li>El libro Design Patterns (Patrones de Diseño) describe el patrón de diseño Estrategia con las siguientes palabras: </li></ul><ul><ul><li>&quot;Define una familia de algoritmos, encapsula cada una y las vuelve intercambiables. </li></ul></ul><ul><ul><li>El patrón de diseño Estrategia permite que el algoritmo varíe independientemente de los clientes que lo utilizan.&quot; </li></ul></ul>
  9. 10. Definición de Strategy <ul><li>En el patrón de diseño Estrategia , cada algoritmo es encapsulado en su propia clase. </li></ul><ul><li>Se crea una interfaz que declara un método para ejecutar un algoritmo y las clases del algoritmo implementan la interfaz. </li></ul>
  10. 11. Aplicación de Strategy <ul><li>Las aplicaciones donde el patrón de diseño Estrategia puede resultar útil son: </li></ul><ul><ul><li>Una aplicación para comprimir archivos que permite al usuario seleccionar el tipo de compresión </li></ul></ul><ul><ul><li>Una aplicación donde la naturaleza de los datos que serán ordenados determina el algoritmo de ordenamiento </li></ul></ul>
  11. 12. Aplicación de Strategy <ul><li>Un algoritmo puede ser considerado una estrategia y de ahí el origen del nombre del patrón. </li></ul><ul><li>En esta página, utilizaremos los términos de forma intercambiable </li></ul>
  12. 14. En el patrón de diseño Estrategia: <ul><li>La interfaz Strategy define la firma del método que será utilizado para llamar a un algoritmo. </li></ul><ul><li>Las clases ConcreteStrategy X implementan el método declarado en la interfaz Strategy . </li></ul><ul><li>La clase Context mantiene una referencia a un objeto de tipo Strategy , llamada strategy . </li></ul>
  13. 15. Ejemplo <ul><li>El siguiente diagrama de clase muestra una mejora al sistema de la biblioteca. </li></ul><ul><li>Esta mejora hace posible dar formato a la información de la base de datos de usuarios en una de las siguientes tres formas: texto plano, HTML y XML: </li></ul>
  14. 17. Más información <ul><li>Para ver la implementación y detalle en código usando Strategy, revisar la sección 2.3.6 del material de iCarnegie </li></ul>

×