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();
是不是感覺很有意思呀!
在框架中基本上這些模式都會被用到