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.
Bu yazı yorumlara kapalı.