PHP設計模式

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();
是不是感覺很有意思呀!

在框架中基本上這些模式都會被用到

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章