Komut:
Temel bileşenler:
- Komut gibi soyut komutlar için bir arayüz bildirir
execute()
- Alıcı , belirli bir komutu nasıl yürüteceğini bilir
- Invoker ,yürütülmesi gereken ConcreteCommand'e sahiptir
- Müşteri , ConcreteCommand'ı oluştururve Alıcıyı atar
- ConcreteCommand , Komut ve Alıcı arasındaki bağlantıyı tanımlar
İş Akışı:
İstemci , Invoker => Invoker'ı çağırır ConcreteCommand => ConcreteCommand , soyut Command yöntemini uygulayan Receiver yöntemini çağırır .
Avantaj : İstemci, Komut ve Alıcıdaki değişikliklerden etkilenmez. Invoker, Müşteri ve Alıcı arasında gevşek bağlantı sağlar. Aynı Invoker ile birden fazla komut çalıştırabilirsiniz.
Komut kalıbı,aynı Çağırıcıyı kullanarakfarklı Alıcılar üzerinde bir komut yürütmenizi sağlar. Invoker, Alıcının türünün farkında değil
Kavramların daha iyi anlaşılması için, bu JournalDev bir göz makalesinde tarafından Pankaj Kumar ve DZone makalesinde tarafından James Sugrue Vikipedi bağlantısına ek olarak.
Sen kullanabilirsiniz Komut için desen
Çağırıcıyı ve komut alıcısını ayırın
Geri arama mekanizmasını uygulayın
Geri alma ve yineleme işlevini uygulayın
Komutların geçmişini koruyun
java.lang.Thread
Komut kalıbının iyi bir uygulamasıdır . Sen davranabilirsiniz Konu invoker & sınıfta uygulama olarak Runnable olarak ConcreteCommonad / Alıcı ve run()
olarak yöntemiyle Komutanlığı .
Komut modelinin Geri Al / Yinele versiyonu Theodore Norvell'in makalesinde okunabilir.
Strateji:
Strateji kalıbının anlaşılması çok basittir. Bu modeli ne zaman kullanın
Bir algoritma için birden fazla uygulamanız var ve algoritma uygulaması, belirli koşullara bağlı olarak çalışma zamanında değişebilir .
Havayolu rezervasyon sisteminin Ücret bileşeninin bir örneğini ele alalım
Havayolları, farklı zaman dilimlerinde - Yoğun ve Yoğun Olmayan aylarda farklı Ücretler sunmak ister. Yoğun olmayan seyahat günlerinde, cazip indirimler sunarak talebi canlandırmak istiyor.
Strateji modelinin temel çıkarımları :
- Bu davranışsal bir kalıp
- Yetkilendirmeye dayalıdır
- Yöntem davranışını değiştirerek nesnenin cesaretini değiştirir
- Algoritma ailesi arasında geçiş yapmak için kullanılır
- Çalışma zamanında nesnenin davranışını değiştirir
Kod örnekleriyle ilgili gönderiler:
Command Design modelini kullanma
Strateji Modelinin Gerçek Dünyadan Örneği