<?php
/**
* 【简单工厂】
* 之前 02.php 面向接口开发,客户端还是知道了服务器端的所有类。
* 现在想让客户端只知道一个类,就用工厂。
*/
header("Content-type: text/html; charset=utf-8");
/*共同接口--连接数据库*/
interface db{
function conn();
}
/*服务端开发,面向上面的接口。(不知道将会被谁调用)*/
class dbmysql implements db{
public function conn(){
echo '03-连接上了mysql<br>';
}
}
class dbsqlite implements db{
public function conn(){
echo '03-连接上了sqlite<br>';
}
}
//定义一个工厂类
class Factory{
public static function createDB($type){
if($type=='mysql'){
$db = new dbmysql();
}elseif($type=='sqlite'){
$db = new dbsqlite();
}else{
echo 'Error...';
}
return $db->conn();
}
}
/* 客户端开发,现在客户端不知道服务端到底有哪些类名。
* 只知道对方开放了一个 factory::createDB 方法,
* 并且方法允许传递数据库名称
*/
Factory::createDB('mysql'); //输出“连接上了mysql”
Factory::createDB('sqlite'); //输出“连接上了sqlite”