您的位置:首页 > 编程语言 > PHP开发

PHP设计模式

2015-06-25 09:47 609 查看
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();
是不是感觉很有意思呀!
在框架中基本上这些模式都会被用到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息