-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFactory.php
More file actions
77 lines (75 loc) · 1.14 KB
/
Factory.php
File metadata and controls
77 lines (75 loc) · 1.14 KB
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
<?php
//共同接口
interface db
{
public function conn();
}
/**
*@class 服务端开发(不知道谁将会被调用)
*
*/
class dbmysql implements db
{
public function conn()
{
echo '连接上了Mysql';
}
}
class dbsqlite implements db
{
public function conn()
{
echo '连接上了sqlite';
}
}
/**
*@定义一个工厂接口
*/
interface Factory
{
public function createDB();
}
/**
*@实现这个接口
*/
class mysqlFactory implements Factory
{
public function createDB()
{
return new dbmysql();
}
}
class sqliteFactory implements Factory
{
public function createDB()
{
return new dbsqlite();
}
}
/**
*@新增一个oracle
*/
class oracleFactory implements Factory
{
public function createDB()
{
return new oracleDb();
}
}
class oracleDb implements db
{
public function conn()
{
echo '连接上了oracle';
}
}
//客户端调用
$fact = new mysqlFactory();
$db = $fact->createDB();
$db->conn();
$fact = new sqliteFactory();
$db = $fact->createDB();
$db->conn();
$fact = new oracleFactory();
$db = $fact->createDB();
$db->conn();