3
3
// abstract class Handler
4
4
// {
5
5
// protected $successor;
6
-
6
+
7
+ // 设置继承者
7
8
// public function setSuccessor(Handler $successor)
8
9
// {
9
10
// $this->successor = $successor;
10
11
// }
11
-
12
+ // 处理请求的抽象方法
12
13
// abstract function handleRequest(int $request);
13
14
// }
14
-
15
+
16
+ // 如果可以处理请求,就处理之,否者转发给它的后继者
15
17
// class ConcreteHandler1 extends Handler
16
18
// {
17
19
// public function handleRequest(int $request)
20
22
// {
21
23
// echo "ConcreteHandler1 handle it\n";
22
24
// } else if ($this->successor != null) {
25
+ // // 转移
23
26
// $this->successor->handleRequest($request);
24
27
// }
25
28
// }
41
44
// // client
42
45
// $h1 = new ConcreteHandler1();
43
46
// $h2 = new ConcreteHandler2();
47
+ // 设置职责链上下家
44
48
// $h1->setSuccessor($h2);
45
49
// $requests = [1,5,7,16,25];
50
+ // 循环给最小处理者提交请求,不同的数额,由不同权限处理者处理
46
51
// foreach ($requests as $value) {
47
52
// $h1->handleRequest($value);
48
53
// }
@@ -107,12 +112,12 @@ class CommonManager extends Manager
107
112
{
108
113
public function requestApplications (Request $ request )
109
114
{
110
- if ($ request ->requestType === 'dayoff ' && $ request ->number <=2 )
115
+ if ($ request ->getRequestType () === 'dayoff ' && $ request ->getNumber () <=2 )
111
116
{
112
117
echo $ this ->name .": " .$ request ->getRequestContent ()." times: " .$ request ->getNumber ()."\n" ;
113
118
} else {
114
119
if ($ this ->superior != null ) {
115
- $ superior ->requestApplications ($ request );
120
+ $ this -> superior ->requestApplications ($ request );
116
121
}
117
122
}
118
123
}
@@ -122,12 +127,12 @@ class MajaorManager extends Manager
122
127
{
123
128
public function requestApplications (Request $ request )
124
129
{
125
- if ($ request ->requestType === 'dayoff ' && $ request ->number <=5 )
130
+ if ($ request ->getRequestType () === 'dayoff ' && $ request ->getNumber () <=5 )
126
131
{
127
132
echo $ this ->name .": " .$ request ->getRequestContent ()." times: " .$ request ->getNumber ()."\n" ;
128
133
} else {
129
134
if ($ this ->superior != null ) {
130
- $ superior ->requestApplications ($ request );
135
+ $ this -> superior ->requestApplications ($ request );
131
136
}
132
137
}
133
138
}
@@ -137,13 +142,56 @@ class GeneralManager extends Manager
137
142
{
138
143
public function requestApplications (Request $ request )
139
144
{
140
- if ($ request ->requestType === 'dayoff ' )
145
+ if ($ request ->getRequestType () === 'dayoff ' )
141
146
{
142
147
echo $ this ->name .": " .$ request ->getRequestContent ()." times: " .$ request ->getNumber ()."\n" ;
143
- } else if ($ request ->requestType === 'salary ' && $ request ->number <= 500 ){
148
+ } else if ($ request ->getRequestType () === 'salary ' && $ request ->getNumber () <= 500 ){
144
149
echo $ this ->name .": " .$ request ->getRequestContent ()." money: " .$ request ->getNumber ()."\n" ;
145
150
} else {
146
151
echo "no way! \n" ;
147
152
}
148
153
}
149
- }
154
+ }
155
+
156
+ $ jinli = new CommonManager ('jinli ' );
157
+ $ zongjian = new MajaorManager ('zongjian ' );
158
+ $ zhongjinli = new GeneralManager ('zhongjinli ' );
159
+
160
+ $ jinli ->setSuperior ($ zongjian );
161
+ $ zongjian ->setSuperior ($ zhongjinli );
162
+
163
+ $ request = new Request ();
164
+ $ request ->setRequestType ('dayoff ' );
165
+ $ request ->setRequestContent ('xiaocai dayoff ' );
166
+ $ request ->setNumber (1 );
167
+ $ jinli ->requestApplications ($ request );
168
+
169
+ $ request2 = new Request ();
170
+ $ request2 ->setRequestType ('dayoff ' );
171
+ $ request2 ->setRequestContent ('xiaocai dayoff ' );
172
+ $ request2 ->setNumber (4 );
173
+ $ jinli ->requestApplications ($ request2 );
174
+
175
+ $ request3 = new Request ();
176
+ $ request3 ->setRequestType ('salary ' );
177
+ $ request3 ->setRequestContent ('xiaocai add salary ' );
178
+ $ request3 ->setNumber (500 );
179
+ $ jinli ->requestApplications ($ request3 );
180
+
181
+ $ request4 = new Request ();
182
+ $ request4 ->setRequestType ('salary ' );
183
+ $ request4 ->setRequestContent ('xiaocai add salary ' );
184
+ $ request4 ->setNumber (10000 );
185
+ $ jinli ->requestApplications ($ request4 );
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
0 commit comments