2016-03-23 9 views
1

Komut düzeni kullanarak diff komutlarında kapsüllediğim işlevsellik var.Komut şablonunu çalışma zamanı parametrelerine geçirerek nasıl kullanılır?

Sanırım bazı alıyorum şimdiye yalnızca benim komutları örneğin

sağlamak için gereken çalışma zamanı üzerinde params nasıl gereken bilgiyi ve mantıkla komutu oluşturma: Belki

public class sendMessageToServerCommand implements Command { 

    @Override 
    public void execute(String msg){ 
      sendToServerTheMsg(msg); 
    } 
} 

.. 
Command command=new sendMessageToServerCommand(); 
command.execute("msg I got on runtime"); 

Komut modelini kullanmamalı ve başka bir şey düşünmemeli miyim? önerileriniz?

Teşekkürler.

cevap

3

Komut düzeni, oluşturulduktan sonra hiçbir argüman olmadan yürütülebilen bir nesneyi şart koşar (örneğin: Runnable veya Callable), ancak oluşturma sırasında argümanların iletilmesini engelleyen hiçbir şey yoktur; Bu nedenle,argümanını, komutun yapıcısına execute() yönteminden basitçe taşıyabilirsiniz.

Komut şablonunun tipik bir kullanımında, komutlar tek bir yerde oluşturulup diğerinde çalıştırılır. Oluşturma mantığı parametrelendirilmiştir; Yürütme mantığı değil.

+0

Bunun için Spring kullanıyorum. ve bu komut varlıklarını gelişmiş olarak oluşturuyorum. Bu çalışma zamanlarını parazitleri sadece yürütme zamanında ilerletemem. – rayman

+0

Yay, çalışma zamanı argümanlarının geçirilmesine izin verir (ör. Http://stackoverflow.com/questions/22155832/). – jaco0646

+0

Şey, bir anahtar nesne deposu haritasına sahip olduğum eylem anahtarıyla hangi komutu çalıştıracağımı biliyorum. invoker sınıfındaki aksiyon anahtarını alıyorum. Yine de tüm bu uygulamaların nasıl yapıştırılacağını anlamaya çalışıyorum – rayman

İlgili konular