@@ -19,7 +19,7 @@ A short cheat-sheet with Xcode 6 Playground ([Design-Patterns.playground.zip](ht
19
19
>
20
20
> ** Source:** [ wikipedia.org] ( http://en.wikipedia.org/wiki/Creational_pattern )
21
21
22
- ## Singleton
22
+ ##💍 Singleton
23
23
``` swift
24
24
class SingletonClass {
25
25
class var shared : SingletonClass {
@@ -37,32 +37,32 @@ class SingletonClass {
37
37
let instance = SingletonClass.shared
38
38
39
39
```
40
- ##Builder
40
+ ##👷 Builder
41
41
42
42
``` swift
43
43
protocol ThreeDimensions {
44
- var x:Double ? {get }
45
- var y:Double ? {get }
46
- var z:Double ? {get }
44
+ var x: Double ? {get }
45
+ var y: Double ? {get }
46
+ var z: Double ? {get }
47
47
}
48
48
49
- class Point : ThreeDimensions {
49
+ class Point : ThreeDimensions {
50
50
51
- var x:Double ?
52
- var y:Double ?
53
- var z:Double ?
51
+ var x: Double ?
52
+ var y: Double ?
53
+ var z: Double ?
54
54
55
55
typealias PointBuilderClosure = (Point) -> ()
56
56
57
- init (buildClosure :PointBuilderClosure){
57
+ init (buildClosure : PointBuilderClosure) {
58
58
buildClosure (self )
59
59
}
60
60
}
61
61
62
62
```
63
63
** Usage:**
64
64
``` swift
65
- let fancyPoint = Point { point in
65
+ let fancyPoint = Point { point in
66
66
point.x = 0.1
67
67
point.y = 0.2
68
68
point.z = 0.3
@@ -76,39 +76,39 @@ fancyPoint.z
76
76
Shorter but oh-so-ugly alternative:
77
77
78
78
``` swift
79
- let uglierPoint = Point {
79
+ let uglierPoint = Point {
80
80
$0 .x = 0.1
81
81
$0 .y = 0.2
82
82
$0 .z = 0.3
83
83
}
84
84
```
85
85
86
86
87
- ##Abstract Factory
87
+ ##🏭 Abstract Factory
88
88
89
89
90
90
``` swift
91
91
class Number
92
92
{
93
- var number:AnyObject
93
+ var number: AnyObject
94
94
95
95
init (number :AnyObject ){
96
96
self .number = number
97
97
}
98
98
99
- convenience init (integer :Int ){
100
- self .init (number :integer)
99
+ convenience init (integer : Int ) {
100
+ self .init (number : integer)
101
101
}
102
102
103
- convenience init (double :Double ){
104
- self .init (number :double)
103
+ convenience init (double : Double ) {
104
+ self .init (number : double)
105
105
}
106
106
107
- func integerValue () -> Int {
107
+ func integerValue () -> Int {
108
108
return self .number as Int
109
109
}
110
110
111
- func doubleValue () -> Double {
111
+ func doubleValue () -> Double {
112
112
return self .number as Double
113
113
}
114
114
}
@@ -122,20 +122,20 @@ let integer = number.integerValue()
122
122
123
123
```
124
124
125
- ##Prototype
125
+ ##🃏 Prototype
126
126
127
127
``` swift
128
- class ThieveryCorporationPersonDisplay {
128
+ class ThieveryCorporationPersonDisplay {
129
129
130
- var name:String ?
131
- let font:String
130
+ var name: String ?
131
+ let font: String
132
132
133
- init (font :String ){
133
+ init (font : String ) {
134
134
self .font = font
135
135
}
136
136
137
- func clone () -> ThieveryCorporationPersonDisplay{
138
- return ThieveryCorporationPersonDisplay (font : self .font )
137
+ func clone () -> ThieveryCorporationPersonDisplay {
138
+ return ThieveryCorporationPersonDisplay (font :self .font )
139
139
}
140
140
}
141
141
```
@@ -153,7 +153,7 @@ let Eduardo = Prototype.clone()
153
153
Eduardo.name = " Eduardo"
154
154
```
155
155
156
- ##Factory Method
156
+ ## Factory Method
157
157
158
158
``` swift
159
159
protocol Currency {
@@ -216,14 +216,14 @@ CurrencyFactory.currencyForCountry(.UK)?.code() ?? noCurrencyCode
216
216
>
217
217
> ** Source:** [ wikipedia.org] ( http://en.wikipedia.org/wiki/Structural_pattern )
218
218
219
- ##Composite
219
+ ##🌰 Composite
220
220
221
221
``` swift
222
222
/**
223
223
* Component
224
224
*/
225
225
protocol Shape {
226
- func draw (fillColor :String )
226
+ func draw (fillColor : String )
227
227
}
228
228
229
229
/**
@@ -264,18 +264,18 @@ var whiteboard = Whiteboard([Circle(), Square()])
264
264
whiteboard.draw (" Red" )
265
265
```
266
266
267
- ##Façade
267
+ ##👫 Façade
268
268
269
269
``` swift
270
- class Eternal {
270
+ class Eternal {
271
271
272
- class func setObject (value : AnyObject ! , forKey defaultName : String ! ){
272
+ class func setObject (value : AnyObject ! , forKey defaultName : String ! ) {
273
273
let defaults:NSUserDefaults = NSUserDefaults.standardUserDefaults ()
274
- defaults.setObject (value,forKey :defaultName)
274
+ defaults.setObject (value, forKey :defaultName)
275
275
defaults.synchronize ()
276
276
}
277
277
278
- class func objectForKey (defaultName : String ! ) -> AnyObject ! {
278
+ class func objectForKey (defaultName : String ! ) -> AnyObject ! {
279
279
let defaults:NSUserDefaults = NSUserDefaults.standardUserDefaults ()
280
280
return defaults.objectForKey (defaultName)
281
281
}
@@ -284,16 +284,16 @@ class Eternal{
284
284
```
285
285
** Usage:**
286
286
``` swift
287
- Eternal.setObject (" Disconnect me. I’d rather be nothing" ,forKey :" Bishop" )
287
+ Eternal.setObject (" Disconnect me. I’d rather be nothing" , forKey :" Bishop" )
288
288
289
289
Eternal.objectForKey (" Bishop" )
290
290
```
291
291
292
- ##Adapter
292
+ ##🔌 Adapter
293
293
``` swift
294
294
// WARNING: This example uses Point class from Builder pattern!
295
295
296
- class PointConverter {
296
+ class PointConverter {
297
297
298
298
class func convert (#point :Point, base :Double , negative :Bool ) -> Point{
299
299
@@ -339,7 +339,7 @@ tuple.z
339
339
> ** Source:** [ wikipedia.org] ( http://en.wikipedia.org/wiki/Behavioral_pattern )
340
340
341
341
##Chain Of Responsibility
342
- ##Command
342
+ ##🐜 Command
343
343
344
344
``` swift
345
345
protocol FileOperationCommand {
@@ -402,7 +402,7 @@ fileManager.move()
402
402
##Mediator
403
403
##Memento
404
404
##Observer
405
- ##State
405
+ ##🐉 State
406
406
407
407
``` swift
408
408
class Context {
@@ -448,7 +448,7 @@ context.changeStateToUnauthorized()
448
448
(context.isAuthorized , context.userId )
449
449
```
450
450
451
- ##Strategy
451
+ ##💡 Strategy
452
452
453
453
``` swift
454
454
protocol PrintStrategy {
@@ -459,23 +459,23 @@ class Printer {
459
459
460
460
let strategy: PrintStrategy
461
461
462
- func printString (string :String )-> String {
462
+ func printString (string :String ) -> String {
463
463
return self .strategy .printString (string)
464
464
}
465
465
466
- init (strategy : PrintStrategy){
466
+ init (strategy : PrintStrategy) {
467
467
self .strategy = strategy
468
468
}
469
469
}
470
470
471
- class UpperCaseStrategy : PrintStrategy {
472
- func printString (string :String )-> String {
471
+ class UpperCaseStrategy : PrintStrategy {
472
+ func printString (string :String ) -> String {
473
473
return string.uppercaseString
474
474
}
475
475
}
476
476
477
- class LowerCaseStrategy : PrintStrategy {
478
- func printString (string :String )-> String {
477
+ class LowerCaseStrategy : PrintStrategy {
478
+ func printString (string :String ) -> String {
479
479
return string.lowercaseString
480
480
}
481
481
}
@@ -489,7 +489,7 @@ var upper = Printer(strategy: UpperCaseStrategy())
489
489
upper.printString (" O tempora, o mores!" )
490
490
```
491
491
492
- ##Visitor
492
+ ##✈ Visitor
493
493
494
494
``` swift
495
495
protocol PlanetVisitor {
0 commit comments