Рекомендовать шаблон проектирования

Приложение, над которым я работаю, обрабатывает рабочие элементы. В зависимости от состояния рабочего элемента доступен ряд действий. «Завершить» «Отменить» «Переназначить» и т. Д.

Чтобы обеспечить функциональность для действий, у меня в настоящее время есть интерфейс, который выглядит примерно так ...

public interface IActionProvider{
    public void Complete(WorkItem workItem);
    public void Cancel (WorkItem workItem);
    public void Reassign(WorkItem workItem);
}

Затем на основе других деталей рабочего элемента, который у меня есть конкретные реализации интерфейса. Например ...

public class NormalActionProvider :IActionProvider
{
    ...
}

и

public class UrgentActionProvider : IActionProvider
{
   ....
}

Проблема в том, что если я хочу добавить новое действие, скажем ... «Делегировать», мне нужно обновить интерфейс, что, конечно же, влияет на все реализации.

Нарушает ли это принцип открытия / закрытия? Можете ли вы порекомендовать шаблон проектирования или рефакторинг, которые могут мне здесь помочь?

8
задан BZink 8 August 2011 в 03:05
поделиться