Patrón de diseño Strategy

Page 1

Josué Martínez Vargas 1 Patrón de diseño Strategy

Patrón de diseño Strategy Descripción Se aplica para separar la funcionalidad de la estructura de clases. El escenario en el cual se puede implementar es cuando tenemos una clase padre de la cual heredan una serie de clases hijo, y se necesita que cada hijo implemente una función determinada de forma distinta. El patrón consiste en crear una interfaz que declare la función que se desea separar, y declarar una clase por cada implementación que vaya a existir, a estas se les llamará clases algoritmo, y cada una deberá implementar la interfaz. Luego, en la clase padre se define una variable del tipo de la interfaz que fue creada previamente y un método Set para la misma. Además se declara la función que se desea heredar a los hijos y en su implementación se utiliza la variable del tipo de la interfaz. Finalmente, en cada clase hijo se debe modificar el constructor, añadiendo la invocación al método Set de la clase padre, y se le pasa como parámetro una nueva instancia de la clase algoritmo que corresponda. Código de ejemplo (VB .Net) Clase Padre: Es la clase abstracta de la cual se va a heredar Public MustInherit Class Dog Private _IBark As IBark

Se declara una variable del tipo de la interfaz.

Public Sub SetTypeOfBark(ByVal type As IBark) _IBark = type End Sub

Se crea un método para definir el tipo de ladrido.

Public Function Bark() As String Return _IBark.Bark() El método ladrido delega su implementación a la End Function variable del tipo de la interfaz.

End Class

Clases Hijos: Son las clases que heredan. En este caso, Peke y GreatDane son dos razas particulares que heredan de Dog. Public Class Peke Inherits Dog Public Sub New() SetTypeOfBark(New BarkAsPeke()) End Sub End Class

En el constructor se invoca la función para definir el tipo de ladrido. Y se le pasa como parámetro una nueva instancia de la clase algoritmo que corresponda.


Josué Martínez Vargas 2 Patrón de diseño Strategy

Public Class GreatDane Inherits Dog Public Sub New() SetTypeOfBark(New BarkAsGreatDane()) End Sub End Class

Interfaz: Aquí se declara la función o el método que se quiere implementar de forma distinta para cada clase hijo, en este caso, el ladrido debe ser diferente para las razas Peke y GreatDane. Public Interface IBark Function Bark() As String End Interface

Se declara la función o el método Bark para luego implementarlo en las clases algoritmo.

Clases Algoritmo: Estas clases son las que tienen el código que implementa la función. En este caso, la clase BarkAsPeke implementa el ladrido que deberá tener la raza Peke. Public Class BarkAsPeke Implements IBark Public Function Bark() As String Implements IBark.Bark Return "I'm a Peke" Se especifica la forma en que deberá End Function ladrar un perro de raza Peke. End Class

Public Class BarkAsGreatDane Implements IBark Public Function Bark() As String Implements IBark.Bark Return "I'm a Great Dane" End Function End Class


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.