File tree 4 files changed +54
-1
lines changed
Pages/Mediator.xcplaygroundpage
GOFSwift.xcworkspace/xcuserdata/sebastianboldt.xcuserdatad
4 files changed +54
-1
lines changed Original file line number Diff line number Diff line change
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)
Original file line number Diff line number Diff line change 5
5
<page name =' Command' />
6
6
<page name =' Iterator' />
7
7
<page name =' Strategy' />
8
+ <page name =' Mediator' />
8
9
</pages >
9
10
</playground >
Original file line number Diff line number Diff line change @@ -13,8 +13,8 @@ Inspired by: https://github.com/ochococo/Design-Patterns-In-Swift
13
13
* β
Command
14
14
* β
Iterator
15
15
* β
Strategy
16
+ * β
Mediator
16
17
* β Interpreter
17
- * β Mediator
18
18
* β Memento
19
19
* β Observer
20
20
* β State
You canβt perform that action at this time.
0 commit comments