Chain of Responsibility Tasarım Deseni

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda tasarım desenlerinden biri olan Chain of Responsibility tasarım desenini anlatacağım. Hadi başlayalım !
Table of Contents
Aslında bu tasarım deseni diğer tüm tasarım desenlerinde de olduğu gibi C# diline özgü bir kavram değil, tüm nesne yönelimli programlama dillerinde daha temiz kod yazabilmek için oluşturulmuş ve yazılımcılar tarafından da kabul görmüş yazılı olmayan kurallardır ve nesne yönelimli programlama yapılabilen tüm dillerde uygulanabilmektedir.
Chain Of Responsibility Tasarım Deseni Nedir?
Chain of Responsibility (Sorumluluk Zinciri) tasarım deseni, bir isteğin işlenmesi sırasında birden fazla nesne arasında sorumluluk dağılımını sağlayarak isteği işleme ve işlemede esneklik sağlayan bir tasarım desenidir. Bu tasarım deseni, bir nesne tarafından işlenemeyen istekleri, zincirin diğer nesnelerine aktarılarak işlenmesine olanak sağlar.
C# İle Uygulanması
Aşağıda, C# programlama dili kullanılarak Chain of Responsibility tasarım deseninin uygulanması için bir örnek verilmiştir:
// Sorumluluk Zinciri'ndeki nesnelerin ortak arayüzü
abstract class Islem
{
protected Islem _sonrakiIslem;
public void SetSonrakiIslem(Islem islem)
{
_sonrakiIslem = islem;
}
public abstract void Isle();
protected void SonrakiIslemiYurut()
{
if (_sonrakiIslem != null)
{
_sonrakiIslem.Isle();
}
}
}
// Birinci nesne
class IlkIslem : Islem
{
public override void Isle()
{
Console.WriteLine("İlk işlem gerçekleştirildi.");
// İkinci işlemi yürütmek için zinciri devam ettir
SonrakiIslemiYurut();
}
}
// İkinci nesne
class IkinciIslem : Islem
{
public override void Isle()
{
Console.WriteLine("İkinci işlem gerçekleştirildi.");
// Üçüncü işlemi yürütmek için zinciri devam ettir
SonrakiIslemiYurut();
}
}
// Üçüncü nesne
class UcuncuIslem : Islem
{
public override void Isle()
{
Console.WriteLine("Üçüncü işlem gerçekleştirildi.");
// Zincirin sonuna gelindiği için başka işlem yok
}
}
// Kullanım
class Kullanici
{
static void Main()
{
// Sorumluluk zincirini oluştur
Islem ilkIslem = new IlkIslem();
Islem ikinciIslem = new IkinciIslem();
Islem ucuncuIslem = new UcuncuIslem();
ilkIslem.SetSonrakiIslem(ikinciIslem);
ikinciIslem.SetSonrakiIslem(ucuncuIslem);
// İsteği zincirin başına gönder
ilkIslem.Isle();
Console.ReadKey();
}
}
Kod Açıklamaları
Bu örnek, Chain of Responsibility tasarım deseninin nasıl kullanılabileceğini göstermektedir. Islem soyut sınıfı, sorumluluk zincirindeki nesnelerin ortak arayüzünü tanımlamaktadır. Isle() metodu, bir nesnenin bir isteği işleme yöntemini uygulamak için kullanılır. SetSonrakiIslem() metodu, zincirdeki bir sonraki nesneyi tanımlar. SonrakiIslemiYurut() metodu, zincirdeki bir sonraki nesneyi çağırmak için kullanılır.
IlkIslem, IkinciIslem ve UcuncuIslem sınıfları, zincirdeki nesneleri temsil eder. Her sınıf, Islem soyut sınıfından türetilir ve Isle() metodu ile bir isteği işlemek için özelleştirilir.
Kullanici sınıfı, zincirin oluşturulmasını ve bir isteğin zincirin başına gönderilmesini sağlar. İlk önce, zincirdeki nesnelerin oluşturulması ve bir sonraki nesne ile bağlantı kurulması gereklidir. Ardından, bir istek zincirin başına gönderilir ve zincirdeki nesneler sırayla isteği işlemek için çağrılır.
Bu örnek, bir uygulama içinde farklı nesnelerin farklı sorumluluklar üstlenmesi gerektiği durumlarda Chain of Responsibility tasarım desenini kullanmanın uygun olduğunu göstermektedir. Örneğin, bir müşteri hizmetleri uygulamasında, bir müşteri şikayeti farklı departmanlar arasında (teknik destek, satış vb.) dağıtılabilir ve her departman isteği kendi sorumluluğu dahilinde ele alabilir.
Sonuç
Chain of Responsibility tasarım deseni, isteğin işleme sırasında esneklik sağlayarak, bir isteğin işlenmesi için farklı nesneler arasında sorumluluğun dağıtılmasına olanak sağlar. C# programlama dili, Chain of Responsibility tasarım desenini uygulamak için uygun bir araçtır ve yukarıdaki örnek, Chain of Responsibility tasarım deseninin C# kullanılarak nasıl uygulanabileceğini göstermektedir.
Evet chain of responsibility tasarım deseni ve C# ile uygulanması bu şekilde olmakta. Tüm C# yazılarımıza buraya, diğer tasarım deseni yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.