Merhabalar bu yazımda Behavioral kategorisinde yer alan Chain Of Responsibility tasarım desenini nasıl kullanırız bunu göreceğiz.
Chain Of Responsibility (Sorumluluk Zinciri) tasarım kalıbı gerçekleşecek olayın duruma göre farklı şekillerde gerçekleşmesini sağlamak için tasarlanmıştır. Duruma göre zincir üzerinde gezinerek işlemleri gerçekleştirmektedir.
Aşağıda yazdığım örneği inceleyerek olayı anlayabilirsiniz.
protocol Player { func play(_ path:String) var nextPlayer:Player? {get set} } class MP3Player: Player { var nextPlayer: Player? func play(_ path: String) { if path.components(separatedBy: ".")[1] == "mp3" { print("Play song - \(path)") } else { if nextPlayer != nil { nextPlayer?.play(path) } } } } class WAVPlayer: Player { var nextPlayer: Player? func play(_ path: String) { if path.components(separatedBy: ".")[1] == "wav" { print("Play song - \(path)") } else { print("Error type") } } } let mp3Obj = MP3Player() let wavObj = WAVPlayer() mp3Obj.nextPlayer = wavObj mp3Obj.play("letmego.mp3") // Play song - letmego.mp3
Örnekte MP3Player ve WAVPlayer sınıfları zincirin halkalarını temsil etmekte. Eğer kullanıcı mp3 türünde müzik göndermiş ise ilk halkada kalarak müziği çalmakta eğer farklı bir tür göndermiş ise diğer halkaya geçiş yapmakta.
Bu yazı yorumlara kapalı.