Sorumluluk Zinciri (Chain of Responsibility) tasarım deseni, bir isteği işleyen nesnelerin bir zincir oluşturduğu ve isteği işleyecek nesneyi bulmak için bu zinciri takip ettiği bir tasarım desenidir. Bu desen, bir isteğin farklı nesneler arasında ilerlemesini ve her bir nesnenin bu isteği işlemeye karar vermesini sağlar. Her nesne, isteği işleyip işlemeyeceğine karar verir ve işlemesi gerekiyorsa işler, aksi takdirde isteği bir sonraki nesneye iletir. Bu sayede isteği işlemek için birçok nesnenin hiyerarşik bir şekilde bir araya geldiği bir yapı oluşur.

Sorumluluk Zinciri tasarım deseni, özellikle isteği işleyen nesnelerin sıralandığı bir hiyerarşiye sahip olduğu ve isteği işleyecek olan nesneyi çalışma zamanında belirlediği durumlarda kullanışlıdır. Bu tasarım deseni, kodun esnekliğini artırabilir çünkü yeni işleme kuralları eklemek veya mevcut kuralları değiştirmek için mevcut zinciri değiştirmek yerine yeni nesneler eklemek yeterlidir.

Sorumluluk Zinciri tasarım deseninin temel bileşenleri şunlardır:

  1. Handler (İşleyici): Bu, isteği işleyen soyut bir sınıftır veya arayüzdür. Tüm işleyiciler bu arayüzü uygular ve isteği işleme yeteneğine sahiptir.
  2. ConcreteHandler (Somut İşleyici): Bu, isteği işleyen somut sınıflardır. Her somut işleyici, kendi kurallarına göre isteği işler veya zinciri devre dışı bırakabilir.
  3. Client (İstemci): Bu, isteği başlatan veya zinciri başlatan nesnedir. İstemci, isteği işlemek için zincire başlangıç yapar.

Sorumluluk Zinciri tasarım deseni, özellikle kullanıcı girişleri, işlem zincirleri veya olay işleme gibi uygulamalarda kullanışlıdır. Bu desen, işleme sırasında bir dizi nesnenin işbirliği yapmasına ve her nesnenin kendi görevini yerine getirmesine olanak tanır. Bu, kodun daha modüler, bakımı daha kolay ve genişletmesi daha olanaklı hale gelmesini sağlar.

Neden Kullanılır?

Bu tasarım deseni, bir dizi işlem veya görevin hiyerarşik bir sırayla işlenmesi gereken durumlar için idealdir. Özellikle bir isteğin birden fazla nesne tarafından işlenip işlenmeyeceğinin veya hangi nesnenin isteği işleyeceğinin dinamik olarak belirlenmesi gereken durumlarda kullanışlıdır. Sorumluluk Zinciri, bir nesnenin isteği işleyip işlemeyeceğine dair kararı almasını ve bu karara göre isteği işlemesini veya bir sonraki nesneye iletilmesini sağlar.

Nasıl Çalışır?

  1. İstemci bir isteği başlatır ve bu isteği ilk işleyiciye iletir.
  2. İlk işleyici, isteği işleyip işlemeyeceğine karar verir. Eğer isteği işleyebiliyorsa işlemi gerçekleştirir ve işlemi sonlandırır.
  3. İlk işleyici isteği işleyemezse, isteği bir sonraki işleyiciye iletebilir.
  4. İkinci işleyici de aynı şekilde isteği işleyip işleyemeyeceğine karar verir. Eğer işleyebiliyorsa işlemi yapar ve işlemi sonlandırır. İşleyemezse, isteği bir sonraki işleyiciye iletir.
  5. Bu işlem zinciri son işleyiciye kadar devam eder. Son işleyici de isteği işleyebilir veya işlem zincirini tamamen reddedebilir.

Avantajları:

  • İsteklerin işlenme sırasını ve işleyenlerini dinamik olarak ayarlamak için uygundur.
  • İşleyici eklemek veya kaldırmak kolaydır, bu nedenle sistem esnek ve genişletilebilir olur.
  • İstemciyi ve işleyiciyi birbirinden bağımsız tutar, böylece her iki taraf da daha az bağlı olur.

Örnek Kullanım Alanları:

  • İş akışlarının sırasını belirlemek (örneğin, belgelerin farklı aşamalardan geçmesi).
  • Kullanıcı girişlerini işlemek (örneğin, veri doğrulama işlemleri).
  • E-posta veya olay yönlendirme işlemleri gibi durumlar.

Sorumluluk Zinciri tasarım deseni, daha karmaşık ve dinamik iş akışlarına sahip uygulamalarda kullanışlıdır ve kodun daha sürdürülebilir ve genişletilebilir olmasına yardımcı olabilir.

Kategori: