<?php //共同接口 interface db{ function conn(); } class dbmysql implements db{ public function conn(){ echo "连接上了mysql数据库"; } } class dbsqlite implements db{ public function conn(){ echo "连接上了sqlite数据库"; } } //简单工厂 class Factory{ public static function createDb($type){ if($type == 'mysql'){ return new dbmysql(); }elseif($type == 'sqlite'){ return new dbsqlite(); } } } //====客户端现在不知道服务器端到底有哪些雷鸣 //只知道Factory::createCB(); //允许传递 数据库名称 $mysql = Factory::createDB('mysql'); $mysql->conn(); $mysql = Factory::createDB('sqlite'); $mysql->conn(); //如果新增加oracle 类型 ,怎么办 //服务器增加怎么办(java c++得重新编译安装很麻烦) //在面相对象设计原则中 重要的开闭原则 --- 对于修改封闭, 对于扩展添加时开放的