PHP常见设计模式主要有:工厂模式、单例模式
1、工厂模式
<?php
abstract class DB{
abstract public function select();
abstract public function update();
abstract public function delete();
abstract public function add();
}
class MysqlFactory extends DB{
public function select() {
echo 'mysql select';
}
public function update(){
echo 'mysql update';
}
public function delete(){
echo 'mysql delete';
}
public function add(){
echo 'mysql add';
}
}
class SqlserverFactory extends DB{
public function select() {
echo 'SqlServer select';
}
public function update(){
echo 'SqlServer update';
}
public function delete(){
echo 'SqlServer delete';
}
public function add(){
echo 'SqlServer add';
}
}
class Factory{
public static function createFactory($dbname){
$dbname = ucwords($dbname) . 'Factory';
return new $dbname();
}
}
$db = Factory::createFactory('sqlserver');
$db->select();2、单例模式class DB{
public static $instance = null;
public static function getInstance(){
if(self::$instance == null){
self::$instance = new self();
}
return self::$instance;
}
}3、单例模式与工厂模式相结合<?php
abstract class DB{
abstract public function getInstance();
abstract public function select();
abstract public function update();
abstract public function delete();
abstract public function add();
}
class MysqlFactory extends DB{
public static $instance = null;
public function getInstance(){
if(self::$instance == null){
self::$instance = new self();
}
return self::$instance;
}
public function select() {
echo 'mysql select';
}
public function update(){
echo 'mysql update';
}
public function delete(){
echo 'mysql delete';
}
public function add(){
echo 'mysql add';
}
}
class SqlserverFactory extends DB{
public static $instance = null;
public function getInstance(){
if(self::$instance == null){
self::$instance = new self();
}
return self::$instance;
}
public function select() {
echo 'SqlServer select';
}
public function update(){
echo 'SqlServer update';
}
public function delete(){
echo 'SqlServer delete';
}
public function add(){
echo 'SqlServer add';
}
}
class Factory{
public static function createFactory($dbname){
$dbname = ucwords($dbname) . 'Factory';
return $dbname::getInstance();
}
}
$db = Factory::createFactory('sqlserver');
$db->select();是不是感觉很有意思呀!
在框架中基本上这些模式都会被用到
本文介绍了PHP中的工厂模式和单例模式,并展示了如何将这两种模式结合起来使用。通过具体代码实例,详细解释了不同数据库连接方式的实现,包括Mysql和Sqlserver。
3304

被折叠的 条评论
为什么被折叠?



