File tree 6 files changed +81
-2
lines changed
Behavioral.playground/Pages/Untitled Page.xcplaygroundpage
GOFSwift.xcworkspace/xcuserdata/sebastianboldt.xcuserdatad
Pages/Facade.xcplaygroundpage
6 files changed +81
-2
lines changed Original file line number Diff line number Diff line change
1
+ //: [Previous](@previous)
2
+
3
+ import Foundation
4
+
5
+ protocol Country {
6
+ func accept( visitor: Visitor )
7
+ }
8
+
9
+ protocol Visitor {
10
+ var age : Int { get }
11
+ func visit( country: Country )
12
+ }
13
+
14
+ class Germany : Country {
15
+ func accept( visitor: Visitor ) {
16
+ if visitor. age >= 18 {
17
+ visitor. visit ( country: self )
18
+ }
19
+ }
20
+ }
21
+
22
+ class USA : Country {
23
+ func accept( visitor: Visitor ) {
24
+ if visitor. age >= 18 {
25
+ visitor. visit ( country: self )
26
+ }
27
+ }
28
+ }
29
+
30
+ class Peter : Visitor {
31
+ var age : Int
32
+
33
+ init ( age: Int ) {
34
+ self . age = age
35
+ }
36
+ var visitedCountries : [ Country ] = [ ]
37
+ func visit( country: Country ) {
38
+ visitedCountries. append ( country)
39
+ }
40
+ }
41
+
42
+ let usa = USA ( )
43
+ let germany = Germany ( )
44
+
45
+ let peter = Peter ( age: 19 )
46
+
47
+ germany. accept ( visitor: peter)
48
+
49
+ print ( peter. visitedCountries. last!)
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2
+ <Timeline
3
+ version = " 3.0" >
4
+ <TimelineItems >
5
+ </TimelineItems >
6
+ </Timeline >
Original file line number Diff line number Diff line change 12
12
* ✅ Iterator
13
13
* ✅ Strategy
14
14
* ✅ Mediator
15
+ * ✅ Visitor
15
16
* ❌ Interpreter
16
17
* ❌ Memento
17
18
* ❌ Observer
18
19
* ❌ State
19
- * ❌ Visitor
20
20
21
21
##Creational
22
22
33
33
* ✅ Decorator
34
34
* ✅ Composite
35
35
* ✅ Adapter
36
- * ❌ Facade
36
+ * ✅ Facade
37
37
* ❌ Flyweight
38
38
* ❌ Protection Proxy
39
39
* ❌ Virtual Proxy
Original file line number Diff line number Diff line change
1
+ //: [Previous](@previous)
2
+
3
+ import Foundation
4
+
5
+ //The facade pattern is used to define a simplified interface to a more complex subsystem.
6
+
7
+ enum Eternal {
8
+
9
+ static func set( _ object: Any , forKey defaultName: String ) {
10
+ let defaults : UserDefaults = UserDefaults . standard
11
+ defaults. set ( object, forKey: defaultName)
12
+ defaults. synchronize ( )
13
+ }
14
+
15
+ static func object( forKey key: String ) -> AnyObject ! {
16
+ let defaults : UserDefaults = UserDefaults . standard
17
+ return defaults. object ( forKey: key) as AnyObject !
18
+ }
19
+
20
+ }
21
+
22
+ Eternal . set ( " Disconnect me. I’d rather be nothing " , forKey: " Bishop " )
23
+ Eternal . object ( forKey: " Bishop " )
Original file line number Diff line number Diff line change 5
5
<page name =' Decorator' />
6
6
<page name =' Composite' />
7
7
<page name =' Adapter' />
8
+ <page name =' Facade' />
8
9
</pages >
9
10
</playground >
You can’t perform that action at this time.
0 commit comments