-
Notifications
You must be signed in to change notification settings - Fork 0
/
Contents.swift
83 lines (75 loc) · 1.61 KB
/
Contents.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//MARK: - example 1
//protocol ServerProtocol {
// func grandAccess(user: User)
// func denyAccess(user:User)
//}
//
//class User {
// let id = "123"
//
//}
//
//class ServerSide: ServerProtocol {
// func grandAccess(user: User) {
// print("access granted to user with id = \(user.id)")
// }
//
// func denyAccess(user: User) {
// print("access dined to user with id = \(user.id)")
// }
//}
//
//
//class ServerProxy: ServerProtocol {
// lazy private var server: ServerSide = ServerSide()
//
// func grandAccess(user: User) {
// server.grandAccess(user: user)
// }
//
// func denyAccess(user: User) {
// server.denyAccess(user: user)
// }
//}
//
//MARK: - Tests
//
//let user = User()
//let proxy = ServerProxy()
//
//proxy.grandAccess(user: user)
//proxy.denyAccess(user: user)
//MARK: - Example 2
protocol ServerProtocol {
func grandAccess(user:User)
}
class User {
let name = "Kirill"
let password = "123"
}
class ServerSide: ServerProtocol {
func grandAccess(user: User) {
print("access granted to user with id = \(user.name)")
}
}
class ServerProxy: ServerProtocol {
private var server: ServerSide!
func grandAccess(user: User) {
guard server != nil else {
print("access can't be granted")
return
}
server.grandAccess(user: user)
}
func auth(user: User) {
guard user.password == "123" else { return }
print("User authenticated")
server = ServerSide()
}
}
//MARK: - Tests
let user = User()
let proxy = ServerProxy()
proxy.grandAccess(user: user)
proxy.auth(user: user)
proxy.grandAccess(user: user)