中介者 vs 协调者
1. 中介者模式(Mediator Pattern)示例
// Mediator Protocol
protocol Mediator {
func send(message: String, colleague: Colleague)
}
// ConcreteMediator
class ChatRoom: Mediator {
var colleagues: [Colleague] = []
func addColleague(_ colleague: Colleague) {
colleagues.append(colleague)
colleague.mediator = self
}
func send(message: String, colleague: Colleague) {
for c in colleagues {
if c !== colleague {
c.receive(message)
}
}
}
}
// Colleague Protocol
protocol Colleague {
var mediator: Mediator? { get set }
func send(message: String)
func receive(_ message: String)
}
// ConcreteColleague (User)
class User: Colleague {
var mediator: Mediator?
let name: String
init(name: String) {
self.name = name
}
func send(message: String) {
mediator?.send(message: message, colleague: self)
}
func receive(_ message: String) {
print("\(name) received: \(message)")
}
}
// Usage
let chatRoom = ChatRoom()
let user1 = User(name: "Alice")
let user2 = User(name: "Bob")
let user3 = User(name: "Charlie")
chatRoom.addColleague(user1)
chatRoom.addColleague(user2)
chatRoom.addColleague(user3)
user1.send(message: "Hello, everyone!")
user2.send(message: "Hi, Alice!")中介者模式的输出:
2. 协调者模式(Coordinator Pattern)示例
协调者模式的输出:
总结:
Last updated