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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
// 抽象基类 User abstract
class User{
protected
$name = NULL;
// 构造函数
function
User( $name ){
$this ->name = $name ;
}
// 获取属性$name
function
getName(){
return
$this ->name;
}
// 浏览权限
function
ViewAccess(){
return
"No" ;
}
// 编辑权限
function
EditAccess(){
return
"No" ;
}
// 删除权限
function
DeleteAccess(){
return
"No" ;
}
// 管理权限
function
ManageAccess(){
return
"No" ;
}
} // 普通用户 class Client extends
User{
function
ViewAccess(){
return
"Yes" ;
}
} // 编辑 class Manager extends
User{
function
ViewAccess(){
return
"Yes" ;
}
function
EditAccess(){
return
"Yes" ;
}
} // 管理员 class Administrator extends
User{
function
ViewAccess(){
return
"Yes" ;
}
function
EditAccess(){
return
"Yes" ;
}
function
DeleteAccess(){
return
"Yes" ;
}
} // 技术人员 class Supporter extends
User{
function
ViewAccess(){
return
"Yes" ;
}
function
EditAccess(){
return
"Yes" ;
}
function
DeleteAccess(){
return
"Yes" ;
}
function
ManageAccess(){
return
"Yes" ;
}
} // 工厂类 class Factory{
// 静态成员属性
private
static $users = array ( "Simon" => "Client" , "Elaine" => "Administrator" , "Bob" => "Supporter" , "Tom" => "Manager" );
// 创建对象的成员方法
static
function Create( $name ){
//根据成员属性的不同创建不同的对象
switch
(self:: $users [ $name ]){
case
"Client" :
return
new Client( $name );
case
"Manager" :
return
new Manager( $name );
case
"Administrator" :
return
new Administrator( $name );
case
"Supporter" :
return
new Supporter( $name );
}
}
} // 一个存放用户名的数组 $users
= array ( "Elaine" , "Simon" , "Bob" , "Tom" );
// 对于每个用户分析其权限 foreach ( $users
as $user ){
$obj
= Factory::Create( $user );
echo
PHP_EOL. $obj ->getName(), ‘的权限‘ ,PHP_EOL;
echo
‘浏览:‘ , $obj ->ViewAccess(),PHP_EOL;
echo
‘修改:‘ , $obj ->EditAccess(),PHP_EOL;
echo
‘删除:‘ , $obj ->DeleteAccess(),PHP_EOL;
echo
‘管理:‘ , $obj ->ManageAccess(),PHP_EOL;
} /* 结果: Elaine的权限 浏览:Yes 修改:Yes 删除:Yes 管理:No Simon的权限 浏览:Yes 修改:No 删除:No 管理:No Bob的权限 浏览:Yes 修改:Yes 删除:Yes 管理:Yes Tom的权限 浏览:Yes 修改:Yes 删除:No 管理:No */ |