## Design Patterns: Swift ve Sorumluluk Zinciri
Swift programlama dili, iOS ve OS X uygulamaları geliştirmek için kullanılan popüler bir dil. Swift ile, yazılımcılar temel olarak nesne tabanlı programlamaya dayanarak, çok sayıda tasarım desenini kullanarak kompleks projeler oluşturabilirler. Bu makalede, Swift programlama dili ile sorunluluk zinciri tasarım deseni hakkında bir bakış vereceğiz.
Bir tasarım deseni, bildiğiniz gibi, bir problemin çözümünde kullanılan bir yaklaşımdır. Tasarım desenleri, özellikle de nesne tabanlı programlamada, tekrarlanan bir şablon olarak kullanılır. Sorumluluk zinciri tasarım deseni, bu tür tasarım desenlerinden biridir ve nesne tabanlı programlamaya dayanır.
Sorumluluk zinciri tasarım deseni, bir nesne tarafından istenen bir talebi alır ve bu talebi karşılayacak olan diğer nesneleri arar. Bu nesneler, talebi karşılayacak veya reddedecekler. Talebin karşılanması durumunda, talebin yürütülmesi için diğer nesneler tarafından gerekli işlemlerin gerçekleştirilmesi gerekecektir.
Bu tasarım deseninin temel mantığı, bir talebin karşılanmasının, sorumluluk zincirinin başladığı noktadan itibaren ilerlenmesi ile gerçekleştirilmesidir. Her bir nesne, talebi karşılayacak mı yoksa reddedecek mi onu belirleyecektir. Eğer talebi karşılayacaksa, diğer nesneler tarafından gerekli işlemlerin gerçekleştirilmesi gerekecektir.
Swift programlama dili, sorunluluk zinciri tasarım deseninin kullanımını kolaylaştırmak için birkaç özelliğe sahiptir. Örneğin, protokol türü, bir nesneye bir talebi vermek için kullanılır. Bir protokol, bir nesnenin kendi sorumluluk zincirinde bir sonraki nesneye talebin devredilmesi için gerekli olan talebi karşılayacak şekilde tanımlanır.
Aşağıdaki örnekte, bir “İşlem” protokolü tanımlanıyor ve bir “İşlem” protokolüne uyan bir sınıf oluşturuluyor. “İşlem” protokolü, bir nesneye bir talebi vermek için kullanılır. Sınıf, talep edilen işlemi yapmak için gerekli olan görevleri gerçekleştirecektir.
protocol Process {
func execute()
}
class Task: Process {
func execute() {
// Do something
}
}
Bir sonraki adım, sorumluluk zincirinin oluşturulmasıdır. Bu, bir nesnenin bir talebi alıp, bu talebi karşılayacak olan diğer nesneleri araması anlamına gelir. Bu nesneler, talebi karşılayacak veya reddedecekler. Bir talebin karşılanması durumunda, talebin yürütülmesi için diğer nesneler tarafından gerekli işlemlerin gerçekleştirilmesi gerekecektir.
Aşağıdaki örnekte, bir “Sorumluluk Zinciri” sınıfı tanımlanıyor. Sınıf, istenen işlemi yapmak için gerekli olan görevleri gerçekleştirecek. Sınıf, iki parametreye sahiptir; bir “İşlem” protokolüne uyan bir nesne ve bir sonraki nesneyi temsil eden bir “Sorumluluk Zinciri” değişkeni.
class ResponsibilityChain {
let process: Process
var next: ResponsibilityChain?
init(process: Process) {
self.process = process
}
func execute() {
process.execute()
next?.execute()
}
}
Son olarak, oluşturulan sorumluluk zincirinin kullanımını gösterelim. Aşağıdaki örnekte, iki “İşlem” protokolüne uyan nesne oluşturuluyor ve her bir nesne için bir “Sorumluluk Zinciri” değişkeni oluşturuluyor. Son olarak, her bir “Sorumluluk Zinciri” değişkeninin bir sonraki değişkenini ayarlayarak, sorumluluk zincirinin oluşturulması sağlanıyor.
let task1 = Task()
let task2 = Task()
let chain1 = ResponsibilityChain(process: task1)
let chain2 = ResponsibilityChain(process: task2)
chain1.next = chain2
chain1.execute()
Burada, sorumluluk zinciri tasarım deseninin Swift programlama dili ile nasıl kullanılabileceğini gördük. Bu tasarım deseni, nesne tabanlı programlamaya dayanan programlamada kullanılan tekrarlanan bir şablon olarak kullanılır. Tasarım deseni, bir nesne tarafından istenen bir talebi alır ve bu talebi karşılayacak olan diğer nesneleri arar. Bir talebin karşılanması durumunda, talebin yürütülmesi için diğer nesneler tarafından gerekli işlemlerin gerçekleştirilmesi gerekecektir. Bu makalede, Swift programlama dili ile sorunluluk zinciri tasarım deseni hakkında bir bakış verdik.