Skip to content

Commit 443e3e4

Browse files
committed
+Adapter and improvements
1 parent fdf0c64 commit 443e3e4

File tree

1 file changed

+74
-18
lines changed

1 file changed

+74
-18
lines changed

README.markdown

Lines changed: 74 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Playground generated with: [Swift Playground Builder](https://github.com/jas/swi
2121
```swift
2222
class SingletonClass {
2323
class var shared : SingletonClass {
24-
24+
2525
struct Static {
2626
static let instance : SingletonClass = SingletonClass()
2727
}
@@ -158,47 +158,103 @@ Eduardo.name = "Eduardo"
158158
>**Source:** [wikipedia.org](http://en.wikipedia.org/wiki/Structural_pattern)
159159
160160
##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+
```
161191
##Façade
162192

163193
```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")
166215

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{
168224

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{
170226

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) }
175231
}
176232

177-
return point
233+
return pointConverted
178234
}
179235
}
180236

181-
class OhSoSimplePointConverter{
237+
extension PointConverter{
182238

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)
186243

187-
return (pointCalculated.x,pointCalculated.y,pointCalculated.z)
244+
return (pointCalculated.x!,pointCalculated.y!,pointCalculated.z!)
188245
}
189-
246+
190247
}
191248
```
192249
**Usage:**
193250
```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)
195252

196253
tuple.x
197254
tuple.y
198255
tuple.z
199256
```
200257

201-
##Adapter
202258
##Bridge
203259
##Decorator
204260
##Proxy

0 commit comments

Comments
 (0)