İçeriğe geç

Command Pattern

Merhabalar bu yazımda Command tasarım deseninin kullanımını görmüş olacağız.

Command (Komuta) tasarım deseni kullanım oranı yüksek ve kullanışlı bir tasarım desenidir. İOS üzerinde bulunan modüllerdede kullanılmaktadır. Yapı olarak tetiklenecek olan olayları aynı sınıfta değilde parçalanarak farklı bir sınıf ile tetikleme işlem yapmayı sağlar. Facade tasarım desenine benzer ancak buradaki farklardan biri Command deseninde ortak bir arayüzün kullanılmasıdır.

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

protocol DoorExecute {
    func execute()
    var doorName:String {get set}
}

class DoorOpen: DoorExecute {
    
    var doorName: String
    
    init(name:String) {
        self.doorName = name
    }
    
    func execute() {
        
        print("Opened door {\(self.doorName)}")
    }
    
}

class DoorClose: DoorExecute {
    
    var doorName: String
    
    init(name:String) {
        self.doorName = name
    }
    
    func execute() {
        print("Closed door {\(self.doorName)}")
    }
    
}

class Door {
    
    private var doorOpen:DoorExecute
    private var doorClose:DoorExecute

    init(name:String) {
        doorOpen = DoorOpen(name: name)
        doorClose = DoorClose(name: name)
    }
    
    func open() {
        doorOpen.execute()
    }
    
    func close() {
        doorClose.execute()
    }
    
}

let door = Door(name: "A Block")

door.open()
door.close()

 

Tarih:Design PatternsiOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca