-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathContents.swift
85 lines (66 loc) · 1.4 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
84
85
//: Playground - noun: a place where people can play
// Powered by https://maimieng.com from https://github.com/kingcos/Swift-X-Design-Patterns
import UIKit
// 考试协议
protocol Exam {
func questionA()
func questionB()
func questionC()
func answerA() -> String
func answerB() -> String
func answerC() -> String
}
// 试卷
class TestPaper: Exam {
// 模版方法
func questionA() {
print("Q&A 1 \(answerA())")
}
func questionB() {
print("Q&A 2 \(answerB())")
}
func questionC() {
print("Q&A 3 \(answerC())")
}
func answerA() -> String {
return ""
}
func answerB() -> String {
return ""
}
func answerC() -> String {
return ""
}
}
// A 的试卷
class TestPaperA: TestPaper {
override func answerA() -> String {
return "A"
}
override func answerB() -> String {
return "B"
}
override func answerC() -> String {
return "C"
}
}
// B 的试卷
class TestPaperB: TestPaper {
override func answerA() -> String {
return "C"
}
override func answerB() -> String {
return "B"
}
override func answerC() -> String {
return "A"
}
}
let pA = TestPaperA()
pA.questionA()
pA.questionB()
pA.questionC()
let pB = TestPaperB()
pB.questionA()
pB.questionB()
pB.questionC()