Skip to content

Commit 33eebd9

Browse files
committed
Merge pull request ochococo#52 from maintainer/master
Fix error in mediator pattern.
2 parents 0bf784c + 869b2c1 commit 33eebd9

File tree

4 files changed

+38
-15
lines changed

4 files changed

+38
-15
lines changed

Design-Patterns.playground.zip

4.95 KB
Binary file not shown.

Design-Patterns.playground/Pages/Behavioral.xcplaygroundpage/Contents.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,11 @@ The mediator pattern is used to reduce coupling between classes that communicate
287287
*/
288288

289289
class Colleague {
290+
let name: String
290291
let mediator: Mediator
291292

292-
init(mediator: Mediator) {
293+
init(name: String, mediator: Mediator) {
294+
self.name = name
293295
self.mediator = mediator
294296
}
295297

@@ -316,15 +318,15 @@ class MessageMediator: Mediator {
316318
func send(message: String, colleague: Colleague) {
317319
for c in colleagues {
318320
if c !== colleague { //for simplicity we compare object references
319-
colleague.receive(message)
321+
c.receive(message)
320322
}
321323
}
322324
}
323325
}
324326

325327
class ConcreteColleague: Colleague {
326328
override func receive(message: String) {
327-
print("Colleague received: \(message)")
329+
print("Colleague \(name) received: \(message)")
328330
}
329331
}
330332

@@ -333,8 +335,8 @@ class ConcreteColleague: Colleague {
333335
*/
334336

335337
let messagesMediator = MessageMediator()
336-
let user0 = ConcreteColleague(mediator: messagesMediator)
337-
let user1 = ConcreteColleague(mediator: messagesMediator)
338+
let user0 = ConcreteColleague(name: "0", mediator: messagesMediator)
339+
let user1 = ConcreteColleague(name: "1", mediator: messagesMediator)
338340
messagesMediator.addColleague(user0)
339341
messagesMediator.addColleague(user1)
340342

README.md

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ A short cheat-sheet with Xcode 7beta Playground ([Design-Patterns.playground.zip
1212
* [Structural](#structural)
1313

1414

15+
```swift
16+
Behavioral |
17+
[Creational](Creational) |
18+
[Structural](Structural)
19+
```
20+
1521
Behavioral
1622
==========
1723

@@ -20,6 +26,7 @@ Behavioral
2026
>**Source:** [wikipedia.org](http://en.wikipedia.org/wiki/Behavioral_pattern)
2127
2228
```swift
29+
2330
import Swift
2431
import Foundation
2532
```
@@ -325,9 +332,11 @@ The mediator pattern is used to reduce coupling between classes that communicate
325332

326333

327334
class Colleague {
335+
let name: String
328336
let mediator: Mediator
329337

330-
init(mediator: Mediator) {
338+
init(name: String, mediator: Mediator) {
339+
self.name = name
331340
self.mediator = mediator
332341
}
333342

@@ -354,15 +363,15 @@ class MessageMediator: Mediator {
354363
func send(message: String, colleague: Colleague) {
355364
for c in colleagues {
356365
if c !== colleague { //for simplicity we compare object references
357-
colleague.receive(message)
366+
c.receive(message)
358367
}
359368
}
360369
}
361370
}
362371

363372
class ConcreteColleague: Colleague {
364373
override func receive(message: String) {
365-
print("Colleague received: \(message)")
374+
print("Colleague \(name) received: \(message)")
366375
}
367376
}
368377

@@ -374,8 +383,8 @@ class ConcreteColleague: Colleague {
374383

375384

376385
let messagesMediator = MessageMediator()
377-
let user0 = ConcreteColleague(mediator: messagesMediator)
378-
let user1 = ConcreteColleague(mediator: messagesMediator)
386+
let user0 = ConcreteColleague(name: "0", mediator: messagesMediator)
387+
let user1 = ConcreteColleague(name: "1", mediator: messagesMediator)
379388
messagesMediator.addColleague(user0)
380389
messagesMediator.addColleague(user1)
381390

@@ -696,6 +705,11 @@ Creational
696705
>
697706
>**Source:** [wikipedia.org](http://en.wikipedia.org/wiki/Creational_pattern)
698707
708+
```swift
709+
710+
import Swift
711+
import Foundation
712+
```
699713

700714
🌰 Abstract Factory
701715
-------------------
@@ -981,6 +995,11 @@ Structural
981995
>
982996
>**Source:** [wikipedia.org](http://en.wikipedia.org/wiki/Structural_pattern)
983997
998+
```swift
999+
1000+
import Swift
1001+
import Foundation
1002+
```
9841003

9851004
🔌 Adapter
9861005
----------

source/behavioral/mediator.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ The mediator pattern is used to reduce coupling between classes that communicate
88
*/
99

1010
class Colleague {
11+
let name: String
1112
let mediator: Mediator
1213

13-
init(mediator: Mediator) {
14+
init(name: String, mediator: Mediator) {
15+
self.name = name
1416
self.mediator = mediator
1517
}
1618

@@ -37,15 +39,15 @@ class MessageMediator: Mediator {
3739
func send(message: String, colleague: Colleague) {
3840
for c in colleagues {
3941
if c !== colleague { //for simplicity we compare object references
40-
colleague.receive(message)
42+
c.receive(message)
4143
}
4244
}
4345
}
4446
}
4547

4648
class ConcreteColleague: Colleague {
4749
override func receive(message: String) {
48-
print("Colleague received: \(message)")
50+
print("Colleague \(name) received: \(message)")
4951
}
5052
}
5153

@@ -54,8 +56,8 @@ class ConcreteColleague: Colleague {
5456
*/
5557

5658
let messagesMediator = MessageMediator()
57-
let user0 = ConcreteColleague(mediator: messagesMediator)
58-
let user1 = ConcreteColleague(mediator: messagesMediator)
59+
let user0 = ConcreteColleague(name: "0", mediator: messagesMediator)
60+
let user1 = ConcreteColleague(name: "1", mediator: messagesMediator)
5961
messagesMediator.addColleague(user0)
6062
messagesMediator.addColleague(user1)
6163

0 commit comments

Comments
 (0)