PHP设计模式

来源:互联网 发布:儿童拼音软件 编辑:程序博客网 时间:2024/05/22 02:30

PHP常见设计模式主要有:工厂模式、单例模式

1、工厂模式

<?phpabstract 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、单例模式与工厂模式相结合
<?phpabstract 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();
是不是感觉很有意思呀!

在框架中基本上这些模式都会被用到

0 0
原创粉丝点击