İçeriğe geç

Mediator Pattern

Merhabalar bu yazımda Mediator tasarım desenini nasıl kullanırız bunu göreceğiz.

Mediator (Arabulucu) ismindende anlaşılacağı gibi aynı arayüzden türeyen sınıfların arasındaki bağlantı işlemlerini ve diğer işlemleri gerçekleştirmek için ara bir sınıf kullanarak bu işlemi gerçekleştirme mantığıyla yaratılmış bir sınıftır. En çok verilen örneklerden biride havalimanlarında uçakların iznini veren kule yapısıdır. Uçaklar bir birlerinden izin almazlar tüm uçaklar sadece kuleden izin alır ve ona göre işlemler gerçekleşir. Buradaki aracıda kule olmuş olur.

Aşağıda yazdığım örneği inceleyebilirsiniz. Yazdığım yapı kullanıcılara mediator sınıfı aracılığı ile mesaj göndermektedir.

protocol MessageProtocol {
    func send(_ message:String)
}

class User {
    
    var nick:String
    
    init(nick:String) {
        self.nick = nick
    }
    
    func messageSend(_ text:String) {
        print("\(nick) -- send message: \(text)")
    }
    
}

class MessageMediator: MessageProtocol {
    
    var msgUsers:[User] = []
    
    func add(_ user:User) {
        msgUsers.append(user)
    }
    
    func send(_ message: String) {
        for msg in msgUsers {
            msg.messageSend(message)
        }
    }
}

class MessageSender {
    class func sender(_ msg:String, mediator:MessageMediator) {
        mediator.send(msg)
    }
}

let user_1 = User(nick: "uikenan")
let user_2 = User(nick: "dreamer")

let messageMediator = MessageMediator()

messageMediator.add(user_1)
messageMediator.add(user_2)

MessageSender.sender("Hii users!", mediator: messageMediator)

 

Tarih:Design PatternsiOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca