<?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”