Strateji(Strategy) Tasarım Deseni
11-05-2014
Nedir?
Strateji(Strategy) tasarım deseni, behavioral tasarım desenlerinden biridir. Bir dizi algoritma tanımlar, bu algoritmaların erişimi için arayüz sağlar ve algoritmaları tanımlarken birbirlerinin yerine kullanılabilir özellikte tasarlar. Ayrıca client runtime zamanında dilediği algoritmayı seçebilir.
Ne zaman Kullanılır?
Belirli bir iş için birden çok algoritmaya(yönteme) sahip olduğumuzda kullanılır.
Nasıl Kullanılır?
Öncelikle bir algoritma interface'i oluşturulur .Daha sonra oluşturulan interface'i implement edecek algoritma sınıfları yaratılır. Context sınıfı yaratılır. Bu sınıf içerisinde algoritma interface türünden algoritmaların set edilmesi için bir metod bulunur. Bu metod sayesinde Context sınıfı algoritma nesnesini tutmuş olur. Son olarak bir Client sınıfı oluşturulur. Bu sınıf Context sınıfından ve algoritma sınıflardan nesneler üreterek işlemlerin yapılmasını sağlar
Faydaları Nedir?
Runtime zamanında özel bir işlem için tanımlanmış algoritmalardan dilediğimizi seçebiliriz.
Gerekenler
Türü interface olan Strategy sınıfı
En az iki tane somut Strategy sınıfı
Context sınıfı
Client sınıfı
Örnek Kullanım Alanları
1. java.util.Comparator#compare()
2. javax.servlet.http.HttpServlet, service() ve tüm doXXX() metodları
3. javax.servlet.Filter#doFilter()
Örnek Uygulama
Uygulamamızın UML Diagramı
StratejiTasarım Deseni'nin Şematik Gösterimi
Strateji(Strategy) tasarım deseni, behavioral tasarım desenlerinden biridir. Bir dizi algoritma tanımlar, bu algoritmaların erişimi için arayüz sağlar ve algoritmaları tanımlarken birbirlerinin yerine kullanılabilir özellikte tasarlar. Ayrıca client runtime zamanında dilediği algoritmayı seçebilir.
Ne zaman Kullanılır?
Belirli bir iş için birden çok algoritmaya(yönteme) sahip olduğumuzda kullanılır.
Nasıl Kullanılır?
Öncelikle bir algoritma interface'i oluşturulur .Daha sonra oluşturulan interface'i implement edecek algoritma sınıfları yaratılır. Context sınıfı yaratılır. Bu sınıf içerisinde algoritma interface türünden algoritmaların set edilmesi için bir metod bulunur. Bu metod sayesinde Context sınıfı algoritma nesnesini tutmuş olur. Son olarak bir Client sınıfı oluşturulur. Bu sınıf Context sınıfından ve algoritma sınıflardan nesneler üreterek işlemlerin yapılmasını sağlar
Faydaları Nedir?
Runtime zamanında özel bir işlem için tanımlanmış algoritmalardan dilediğimizi seçebiliriz.
Gerekenler
Türü interface olan Strategy sınıfı
En az iki tane somut Strategy sınıfı
Context sınıfı
Client sınıfı
Örnek Kullanım Alanları
1. java.util.Comparator#compare()
2. javax.servlet.http.HttpServlet, service() ve tüm doXXX() metodları
3. javax.servlet.Filter#doFilter()
Örnek Uygulama
/** * Strateji interface */ public interface Communicate { public void send(); }
/** * Somut algoritma sinifi */ public class Email implements Communicate { @Override public void send() { System.out.println("Email is send"); } }
/** * Somut algoritma sinifi */ public class Sms implements Communicate { @Override public void send() { System.out.println("Sms is send"); } }
/** * Context sinifi */ public class Context { private Communicate communicate; public void setCommunicate(Communicate communicate) { this.communicate = communicate; } public void sendInformation(){ communicate.send(); } }
/** * Test sinifi */ public class Test { public static void main(String[] args) { Context context=new Context(); context.setCommunicate(new Email()); context.sendInformation(); context.setCommunicate(new Sms()); context.sendInformation(); } }
Uygulamamızın UML Diagramı
StratejiTasarım Deseni'nin Şematik Gösterimi