İçeriğe geç

Chain Of Responsibility Pattern

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.

 

Tarih:Design PatternsiOS

Bu yazı yorumlara kapalı.

Copyright © 2021 Kenan Atmaca