@@ -21,7 +21,7 @@ Playground generated with: [Swift Playground Builder](https://github.com/jas/swi
21
21
``` swift
22
22
class SingletonClass {
23
23
class var shared : SingletonClass {
24
-
24
+
25
25
struct Static {
26
26
static let instance : SingletonClass = SingletonClass ()
27
27
}
@@ -158,47 +158,103 @@ Eduardo.name = "Eduardo"
158
158
> ** Source:** [ wikipedia.org] ( http://en.wikipedia.org/wiki/Structural_pattern )
159
159
160
160
##Composite
161
+ ``` swift
162
+ class SafeString
163
+ {
164
+ var embeddedString:String
165
+
166
+ init (_ string :String )
167
+ {
168
+ self .embeddedString = string.stringByReplacingOccurrencesOfString (" \" " , withString : " \\\" " , options : NSStringCompareOptions.LiteralSearch , range : nil )
169
+ }
170
+
171
+ func convert ()-> String
172
+ {
173
+ return self .embeddedString ;
174
+ }
175
+
176
+ func description ()-> String
177
+ {
178
+ return self .embeddedString ;
179
+ }
180
+
181
+ }
182
+
183
+ ```
184
+ ** Usage:**
185
+ ``` swift
186
+ var unsafe = " Watch this: \" ; DELETE * FROM \" php.stupid\" ; "
187
+ var safe = SafeString (unsafe)
188
+
189
+ safe// as String
190
+ ```
161
191
##Façade
162
192
163
193
``` swift
164
- let DEFAULT_POINT_BASE = 2.0
165
- let DEFAULT_POINT_POLARIZATION = false
194
+ class Eternal {
195
+
196
+ class func setObject (value : AnyObject ! , forKey defaultName : String ! ){
197
+
198
+ let defaults:NSUserDefaults = NSUserDefaults.standardUserDefaults ()
199
+ defaults.setObject (value,forKey :defaultName)
200
+ defaults.synchronize ()
201
+ }
202
+
203
+ class func objectForKey (defaultName : String ! ) -> AnyObject ! {
204
+
205
+ let defaults:NSUserDefaults = NSUserDefaults.standardUserDefaults ()
206
+
207
+ return defaults.objectForKey (defaultName)
208
+ }
209
+
210
+ }
211
+ ```
212
+ ** Usage:**
213
+ ``` swift
214
+ Eternal.setObject (" Disconnect me. I’d rather be nothing" ,forKey :" Bishop" )
166
215
167
- class NotSoSimplePointConverter {
216
+ var bishopSaid:AnyObject ! = Eternal.objectForKey (" Bishop" )
217
+ ```
218
+
219
+ ##Adapter
220
+ ``` swift
221
+ // WARNING: This example uses Point class from Builder pattern!
222
+
223
+ class PointConverter {
168
224
169
- class func pointFrom (# x : Double , y : Double , z : Double , base :Double ,negative :Bool ) -> Point{
225
+ class func convert (# point :Point, base :Double , negative :Bool ) -> Point{
170
226
171
- var point = Point {
172
- $0 .x = (x * base) * (negative ? -1.0 : 1.0 )
173
- $0 .y = (y * base) * (negative ? -1.0 : 1.0 )
174
- $0 .z = (z * base) * (negative ? -1.0 : 1.0 )
227
+ var pointConverted = Point {
228
+ if let x = point.x{ $0 .x = x * base * (negative ? -1.0 : 1.0 ) }
229
+ if let y = point.y{ $0 .y = y * base * (negative ? -1.0 : 1.0 ) }
230
+ if let z = point.z{ $0 .z = z * base * (negative ? -1.0 : 1.0 ) }
175
231
}
176
232
177
- return point
233
+ return pointConverted
178
234
}
179
235
}
180
236
181
- class OhSoSimplePointConverter {
237
+ extension PointConverter {
182
238
183
- class func standarizedXYZFrom (#x :Double ,y :Double ,z :Double ) -> (x:Double ! ,y:Double ! ,z:Double ! ){
184
-
185
- var pointCalculated = NotSoSimplePointConverter.pointFrom (x :x,y :y,z :z,base :DEFAULT_POINT_BASE,negative :! DEFAULT_POINT_POLARIZATION)
239
+ class func convert (#x :Double ! , y :Double ! , z :Double ! , base :Double ! , negative :Bool ! ) -> (x:Double ! ,y:Double ! ,z:Double ! ){
240
+
241
+ var point = Point { $0 .x = x; $0 .y = y; $0 .z = z }
242
+ var pointCalculated = self .convert (point :point, base :base, negative :negative)
186
243
187
- return (pointCalculated.x ,pointCalculated.y ,pointCalculated.z )
244
+ return (pointCalculated.x ! ,pointCalculated.y ! ,pointCalculated.z ! )
188
245
}
189
-
246
+
190
247
}
191
248
```
192
249
** Usage:**
193
250
``` swift
194
- var tuple = OhSoSimplePointConverter. standarizedXYZFrom (x :1.1 , y :2.2 , z :3.3 )
251
+ var tuple = PointConverter. convert (x :1.1 , y :2.2 , z :3.3 , base : 2.0 , negative : true )
195
252
196
253
tuple.x
197
254
tuple.y
198
255
tuple.z
199
256
```
200
257
201
- ##Adapter
202
258
##Bridge
203
259
##Decorator
204
260
##Proxy
0 commit comments