İçeriğe geç

Strategy Pattern

Merhabalar bu yazımda Strategy Pattern kullanımını inceleyeceğiz.

Strategy Tasarım kalıbı oldukça yararlı ve işlevsel bir tasarım kalıbı. İsmi ile özdeşmiş tasarım kalıplarından. Bir kaç kelimeyle özetlersem duruma göre strateji kullanmak dersem hiç yanlış olmaz. Algoritmanın mantığı tamamen bu şekilde oluşturulması için tasarlanmış.

Duruma göre client üzerinde kontrol vs işlemlerine girmeden sadece ilgili işlemi ana sınıfa göndererek algoritma değişmek oldukça güzel bir durum.

Aşağıda yazdığım örneği inceleyebilirsiniz.

protocol Sortable {
    func sort(_ array:[Int]) -> [Int]
}


class Math {
    
    private var sortable:Sortable
    
    init(_ sorted:Sortable) {
        self.sortable = sorted
    }
    
    func sort(_ array:[Int]) -> [Int] {
        return sortable.sort(array)
    }
    
}

final class BubbleSort: Sortable {
    func sort(_ array: [Int]) -> [Int] {
        print("Bubble Sort Algorithm Selected")
        return array
    }
}

final class MergeSort: Sortable {
    func sort(_ array: [Int]) -> [Int] {
        print("Merge Sort Algorithm Selected")
        return array
    }
}


var obj = Math(BubbleSort())
obj.sort([1,2,3]) // Bubble Sort Selected

obj = Math(MergeSort())

obj.sort([4,5,6,7,8]) // Merge Sort Selected

Bu örnekte gördüğümüz gibi sadece istediğimiz algoritmayı ana sınıfa belirtiyoruz ve ardından sonuçları almış oluyoruz. Bunun gibi kurgulanabilecek bir modeliniz varsa bu deseni kullanmanız oldukça yararlı olacaktır.

Tarih:Design PatternsiOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca