Una aplicación en la que estoy trabajando Procesos de trabajo. Dependiendo del estado de un elemento de trabajo, hay una cantidad de acciones disponibles. "Completo" "Cancelar" "Reasignar", etc ...Recomiende un patrón de diseño
para proporcionar la funcionalidad de las acciones actualmente tengo una interfaz que se ve algo como esto ...
public interface IActionProvider{
public void Complete(WorkItem workItem);
public void Cancel (WorkItem workItem);
public void Reassign(WorkItem workItem);
}
A continuación, sobre la base de otros detalles de el elemento de trabajo Tengo implementaciones concretas de la interfaz. Sólo por ejemplo ...
public class NormalActionProvider :IActionProvider
{
...
}
y
public class UrgentActionProvider : IActionProvider
{
....
}
El problema es, si quiero añadir una nueva acción, digamos ... "Delegado" Tengo que actualizar la interfaz que por supuesto tiene efectos en todas las implementaciones.
¿Esto viola el principio de apertura/cierre? ¿Me pueden recomendar un patrón de diseño o refactor que pueda ayudarme aquí?