Hm, I do not see the counter argument, so as not to do this.
You can simply declare your Processor or, as you call it:
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); }
and then you can define, for example:
public class ProcessorNoProcess extends Processor { @Override protected List internalProcess(List input) {
Is that what you asked?
k0ner source share