2015-11-30 17 views
5

içinden isteğini geçirmeye Web'de göz amaZincir - tüm zincirler

Ben 3 zincirleri var Sağlar ki ... soruma bir cevap bulamadık. İsteğin 3 zincirin tümünü geçmesini istiyorum (zincirin talebi halledip edemeyeceği önemli değildir). Bu sorun için CoR deseni kullanmak mümkün mü?

Daha iyi açıklamak için - birkaç kural kümesinden geçmek zorunda olan bir listem var. 1. kuralı geçerse, liste aynı kalır. Daha sonra 2. kurala devam eder ve 2. kural bir listeyi değiştirir. Değiştirilen liste 3. kurala geçer, geçer ve değiştirilen liste kaydedilir. Chains

+1

Güzel diyagram için Kudos. Sadece bunun için bir puan alırsın. Ama sorunuzu cevaplamak çok zor olacaktır çünkü bize sorumluluk zincirinin sorununuza iyi bir çözüm getirip getirmediğini soruyorsunuz, fakat sorununuzla ilgili olarak bildiğimiz tek şey, sizin açıklamanızın gerektirdiği bir sorun olduğudur. bir sorumluluk zinciri çözümü. Ayrıca: programmers.stackexchange.com bu tür sorular için stackoverflow'tan daha uygundur. –

+0

Sorumluluk zincirini çağırmak konusunda ısrar etmiyorsanız, zincirdeki tüm işleyicilerin listeyi sonuna kadar geçirmesi için bunu kolayca uygulayabilirsiniz. – zapl

+1

@MikeNakis, diğer sitelere atıfta bulunurken, elbette ki [çapraz gönderiyi kaşıtır] (http://meta.stackexchange.com/tags/cross-posting/info) – gnat

cevap

1

Hm, bunu yapmak için herhangi bir karşı argüman görmüyorum.

Sadece ilan edebilirsiniz Processor ya diyorsunuz ancak:

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); 

} 

ve sonra örneğin tanımlayabilirsiniz:

public class ProcessorNoProcess extends Processor { 

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

ne soran bu mu?

+0

'setSuccessor()' özel olmayabilir. –

+0

Tam olarak aradığım şey, teşekkürler @ k0ner – mirta

İlgili konular