Este es el segundo post de la serie Implementando SOLID, en esta ocasión vamos a implementar el principio Abierto (a la extensión) Cerrado (a la modificación).
Open close principle:
Los (micro)pasos seguidos para aplicar este principio se puede separar en 3 grupos de refactorización, el primer refactor tiene mucho que ver en el principio de responsabilidad única que vimos en el post anterior ya que estamos separando el criterio de filtrado de la aplicación de este criterio sobre la lista de productos. En el segundo refactor nos terminamos de preparar para aplicar el principio OCP (pasos 1 y 2) y lo aplicamos (paso 4). En el tercer refactor podemos ver como extendemos el funcionamiento sin modificar el código anterior.
Refactor 1: Separando responsabilidades de ProductoFilter.ByColor:
|
Refactor 2: generalizando ProductFilter.ByColor y ProductFilter.BySize
|
Refactor 3: agregando implementación de ICriteria para filtrar por color y tamaño
|
código fuente final: clic aquí
Y aquí les comparto la solución de Fernando para este mismo caso y la de Martín