PHP工厂模式
2021-07-15 17:07
标签:abc tor struct content 模块 mysq 避免 header 数据 为什么使用工厂模式: 在多个程序员进行一个大型项目时,经常会用到一个类,但是会加入不同的参数(比如数据库操作类),比较让人害怕的问题是,在项目完成度很高的时候,突然修改这个基类的类名或参数,会让之后的所有的对象都不可用,于是所有人又得修改他们之前的代码,采用工厂模式可以解决这个问题 工厂模式: 在实例化对象之前,使用一个工厂类静态示例化这个类,所有人都调用这个工厂类的静态方法,即使原本的类出现变化,只需要在这个工厂类修改,就可以避免所有人的代码报错 代码: 在以上代码中,可能觉得工厂类操作很多余,完全可以直接示例化,但是如果多个模块都有示例化的操作,而我们因为一些原因修改了类名,会导致所有有关这个类的代码全部失效,为了避免这个问题,可以通过上面的工厂类来形成一种过渡缓冲的作用。 单例模式与工厂模式的区别: 单例模式适用那些参数固定且出现次数多的类。 工厂模式适用参数不固定且出现次数多的类。 PHP工厂模式 标签:abc tor struct content 模块 mysq 避免 header 数据 原文地址:http://www.cnblogs.com/chengzhongde/p/7072549.html 1 header("Content-type:text/html;charset=utf-8");
2 interface db{
3
4 function select($sql);
5 function query($sql);
6
7 }
8 class basedb implements db{
9
10 public function __construct($db){
11
12 $conn = mysql_connect(‘localhost‘,‘root‘,‘root‘);
13 if(!$conn){
14 die(mysql_error());
15 }
16 mysql_select_db($db);
17 mysql_query("Set Names ‘utf8‘");
18 }
19 public function select($sql){
20
21 $res = mysql_query($sql);
22 $arr = array();
23 while($row = mysql_fetch_assoc($res)){
24 $arr[] = $row;
25 }
26 return $arr;
27 }
28 public function query($sql){
29
30 $res = mysql_query($sql);
31 if(!$res){
32 die(mysql_error());
33 }else{
34 return true;
35 }
36 }
37 }
38 class factory{
39
40 public static function getdb($db){
41
42 return new basedb($db);
43
44 }
45 }
46 $a = factory::getdb(‘user‘);
47 $user = $a->select("select * from user");
48 var_dump($user);
49
50 $b = factory::getdb(‘test‘);
51 $result = $b->query("insert into test(`title`,`content`)values(‘123‘,‘ABC‘)");
52 var_dump($result);
上一篇:MVC项目实践(二)——需求分析