İçeriğe geç

Interpreter Pattern

Merhabalar bu yazımda Interpreter tasarım kalıbının kullanımını göreceğiz.

Interpreter (Yorumlayıcı) tasarım deseni String üzerinde yapılan yorumlama ve çevirme işlemleri için tasarlanmıştır. Elimizde bulunan String verisinin sayısal veya mantıksal olarak işlemesi bu tasarım kalıbı ile kontrollü bir şekilde gerçekleşmektedir. Çok yoğun olarak kullanılan bir kalıp olmasada duruma göre kullanılabilinir.

Aşağıdaki yazdığım örneği inceleyebilirsiniz. Bu örnek üzerinde Interpreter yapısında bir String setini Ascii setine çevirme işlemi gerçekleştiren yapıyı modellemiş oldum.

class Context {
    var text:String?
    var ascii:String?
}

protocol TerminalExpression {
    func interpret(_ context:Context)
    func converter(_ str:String) -> String
}

class asciiExp: TerminalExpression {
    
    func interpret(_ context: Context) {
        
        guard context.text != nil else {
            return
        }
        
        context.ascii = self.converter(context.text!)
    }
    
    func converter(_ str: String) -> String {
        var asciiSet:[String] = []
        
        str.unicodeScalars.map { (u) in
            asciiSet.append(String(u.value))
        }
        
        return asciiSet.joined()
    }
    
}

var context = Context()
context.text = "KENAN"

let ascii = asciiExp()

ascii.interpret(context)

context.ascii // 7569786578

 

Tarih:Design PatternsiOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca