Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@LH17
Created January 1, 2019 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LH17/eed36f9827d51974e56add727c0de9ab to your computer and use it in GitHub Desktop.
Save LH17/eed36f9827d51974e56add727c0de9ab to your computer and use it in GitHub Desktop.
Mediator Design Pattern
protocol Receiver {
var name: String { get }
func receive(message: String)
}
protocol Sender {
var teams: [Receiver] { get set }
func send(message: String, sender: Receiver)
}
class Mediator: Sender {
var teams: [Receiver] = []
func register(candidate: Receiver) {
teams.append(candidate)
}
func send(message: String, sender: Receiver) {
for team in teams {
if team.name != sender.name {
team.receive(message: message)
}
}
}
}
struct TeamA: Receiver {
var name: String
init(name: String) {
self.name = name
}
func receive(message: String) {
print("\(name) received: \(message)")
}
}
struct TeamB: Receiver {
var name: String
init(name: String) {
self.name = name
}
func receive(message: String) {
print("\(name) received: \(message)")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment