2015-11-30 10 views
5

Я просмотрел в Интернете, но я не мог найти ответ на мой вопрос ...Цепь ответственности - передать запрос через все цепи

Допустим, у меня есть 3 цепи. Я хочу, чтобы запрос передал все 3 цепи (неважно, может ли цепочка обрабатывать запрос или нет). Можно ли использовать шаблон CoR для этой проблемы?

Чтобы объяснить это лучше - у меня есть список, который должен пройти несколько правил. Если он пройдет 1-е правило, список останется прежним. Затем он переходит к второму правилу, а второе правило изменяет список. Измененный список переходит к третьему правилу, он проходит, и измененный список сохраняется. Chains

+1

Kudos для приятной диаграммы. У вас есть точка только для этого. Но на ваш вопрос будет сложно ответить, потому что вы спрашиваете нас, является ли цепочка ответственности хорошим решением для вашей проблемы, но все, что мы знаем о вашей проблеме, состоит в том, что это проблема, которая, согласно вашему описанию, требует решение о цепочке ответственности. Кроме того: programers.stackexchange.com более подходит, чем stackoverflow для вопросов такого рода. –

+0

Если вы не настаиваете на том, чтобы называть эту цепочку обязанностей, вы можете просто реализовать ее так, чтобы все обработчики в цепочке проходили список до конца. – zapl

+1

@MikeNakis, ссылаясь на другие сайты, часто полезно указать, что [перекрестная проводка нахмуривается] (http://meta.stackexchange.com/tags/cross-posting/info) – gnat

ответ

1

Хм, я не вижу аргументов счетчика, чтобы этого не делал.

Вы можете просто объявить Processor или же вы называете это:

abstract class Processor { 
    private Processor successor; 

    public void setSuccessor(Processor successor) { this.successor = successor; } 

    public List process(List input) { 
     List processed = this.internalProcess(input); 
     if (successor != null) { return successor.process(processed); } 
     return processed; 
    } 

    protected abstract List internalProcess(List input); 

} 

, а затем вы можете определить, например:

public class ProcessorNoProcess extends Processor { 

    @Override protected List internalProcess(List input) { 
     // do nothing 
     return input; 
    } 
} 

является то, что вы спрашивали?

+0

'setSuccessor()' может быть неактивным. –

+0

Точно, что я искал, спасибо @ k0ner – mirta

 Смежные вопросы

  • Нет связанных вопросов^_^