Skip to content

Commit dd71326

Browse files
author
Sebastian Boldt
committed
Learned Mediator Pattern
1 parent f572258 commit dd71326

File tree

4 files changed

+54
-1
lines changed

4 files changed

+54
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
//: [Previous](@previous)
2+
3+
import Foundation
4+
5+
protocol Sender {
6+
func send(message: String)
7+
}
8+
9+
protocol Receiver {
10+
func receive(message: String)
11+
}
12+
13+
struct Subscriber : Receiver {
14+
var name : String
15+
func receive(message: String) {
16+
print("\(self.name) received message: \(message)")
17+
}
18+
19+
}
20+
21+
class Broadcaster : Sender {
22+
23+
private var receivers: [Receiver] = []
24+
25+
public func addReceiver(receiver: Receiver) {
26+
receivers.append(receiver)
27+
}
28+
29+
public func send(message: String) {
30+
for rec in receivers {
31+
rec.receive(message:message)
32+
}
33+
}
34+
}
35+
36+
func broadCast(message:String, broadCaster: Broadcaster) {
37+
broadCaster.send(message: message)
38+
}
39+
40+
let broadCaster = Broadcaster()
41+
42+
broadCaster.addReceiver(receiver: Subscriber(name: "Peter"))
43+
broadCaster.addReceiver(receiver:Subscriber(name: "Hans"))
44+
broadCaster.addReceiver(receiver:Subscriber(name: "Sabine"))
45+
46+
47+
broadCast(message: "Secret Message", broadCaster: broadCaster)
48+
49+
50+
51+
52+
//: [Next](@next)

β€ŽBehavioral.playground/contents.xcplayground

+1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
<page name='Command'/>
66
<page name='Iterator'/>
77
<page name='Strategy'/>
8+
<page name='Mediator'/>
89
</pages>
910
</playground>

β€ŽREADME.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ Inspired by: https://github.com/ochococo/Design-Patterns-In-Swift
1313
* βœ… Command
1414
* βœ… Iterator
1515
* βœ… Strategy
16+
* βœ… Mediator
1617
* ❌ Interpreter
17-
* ❌ Mediator
1818
* ❌ Memento
1919
* ❌ Observer
2020
* ❌ State

0 commit comments

Comments
Β (0)