2016-04-10 13 views
2

5, A, B, C, D, E komutlarına sahibim ve her zaman bu sırayla çalıştırmaları gerekir. Daha fazla komutun bu listeye eklenmesinin iyi bir olasılığı var. Ama her zaman bu sırayla koşmaları gerekir. Ayrıca bir arıza durumunda yürütme durmalıdır. Bir sonraki komut, yalnızca bir öncekinin başarılı geçmesinden sonra çağrılır.Komutlarınızın her zaman belirli bir sırayla çalışması gerektiğinde komut desenini kullanmak mantıklı mıdır?

Yukarıdaki gibi bir senaryoda, komut desenini kullanmak herhangi bir anlam ifade eder mi?

+0

Bir Strateji düzeninde Komutlar olması gerektiği gibi görünüyor. – duffymo

+2

Eh, onları bir listeye koyun. Bir liste sipariş edilir. Neden bir şey uygulamaya çalışıp, somut bir sorun olup olmadığını sorun? Bu çok belirsiz. –

+0

Tipik bir komut düzeninde, iş parçacıkları sıradaki öğeleri alır ve bunları paralel olarak yürütür. Paralel olarak yürütmelerini istemiyorum. B sadece A başarılı olduğunda yürütülür. – Foo

cevap

0

Evet öyle. Doğru sıralamayı sağlamak için her her komutun ihtiyaç duyduğu verileri depolayan bir kuyruk istiyorum olasılıkla edeceğiz rağmen:

queue = (A, B, C, D, E) 

def command(state): 
    # ... 

item = queue.shift() 
command(item) # Processes state 'A' 
0

problemin doğası işlemcilerin bir zincir anlamına gelir. İyi eşleşmeler, Zincirleme Sorumluluğu ve Engelleme Filtresi kalıpları olacaktır.

Chain of Responsibility desen, komut nesneleri ve bir dizi işlem nesnesinden oluşan bir tasarım modelidir. Her işleme nesnesi, işleyebileceği komut nesneleri türlerini tanımlayan mantık içerir; Geri kalanlar zincirdeki bir sonraki işlem nesnesine geçirilir. Bu zincirin sonuna yeni işlem nesneleri eklemek için bir mekanizma da vardır. Filtreler, Intercepting Filter (Java EE sunumu katmanlı modeli) içinde, sayfa isteği denetleyici nesnesine geçirilmeden önce bir dizi ortak işlem adımını yürütmek için birlikte zincirlenebilen bir dizi bağımsız modül oluşturur.

İlgili konular