[C#][Patterns] Patrón Estrategia / Strategy Pattern

Javier Torrecilla
Jtorrecilla .NET
Published in
1 min readNov 8, 2016

Siguiendo un poco la linea de la semana pasada con el post acerca de Singleton, en esta ocasión vamos a utilizar otro patrón bastante utilizado, el patrón Estrategia o Strategy Pattern.

Básicamente este patrón viene a definir un conjunto de algoritmos que estén encapsulados y que sean fácilmente intercambiables.

La mejor manera de ilustrarla es con un ejemplo:

Primero definiremos una interfaz:

Ahora, necesitamos algunas clases que implementen dicha interfaz:

A simple vista, aunque el método Pay, pueda llevar a cabo un código distinto, son componentes perfectamente intercambiables, partiendo de usar la interfaz IPaymentStrategy.

Bueno, ahora necesitaremos una clase que se encargue de hacer las “gestiones” para ejecutar la estrategia adecuada:

En la clase tenemos un diccionario, con las distintas estrategias definidas, y un método Execute que en base a la estrategia indicada por parámetro, la buscara en el diccionario, y la ejecutará.

Aplicar este patrón, nos va a aportar mayor legibilidad en nuestro código, tendremos aisladas las funcionalidades, y nos dará gran flexibilidad para poder extender el código de manera sencilla, ya que si necesitamos una nueva estrategia, simplemente realizaríamos una nueva implementación de la interfaz, y la agregaríamos al diccionario de estrategias del “contexto”.

Espero que os sea de utilidad

--

--

Javier Torrecilla
Jtorrecilla .NET

Geek, Map 2010, MCC 2011, MVP C# 2011/12 Msdn Forum MOD