設(shè)計(jì)模式

設(shè)計(jì)模式

1 . 單例模式

/**
三私一公
*私有的靜態(tài)屬性:保存類(lèi)的單例
*私有的__construct():阻止在類(lèi)的外部實(shí)例化
*私有的__clone():阻止在類(lèi)的外部clone對(duì)象
*共有的靜態(tài)方法:獲取類(lèi)的單例
*/
class MySQLDB {
    private static $instance;   //保存類(lèi)的單例
    private function __construct() {    //阻止在類(lèi)的外部實(shí)例化
    }
    private function __clone() {    //阻止在類(lèi)的外部clone對(duì)象
    }
    //獲取當(dāng)前類(lèi)的單例
    public static function getInstance() {
        if(!self::$instance instanceof self)//$instance中保存的不是MySQLDB類(lèi)的單例就實(shí)例化
            self::$instance=new self();
        return self::$instance; //返回單例
    }
}
//測(cè)試
$db1=MySQLDB::getInstance();
$db2=MySQLDB::getInstance();
var_dump($db1,$db2);

特點(diǎn):

1\ 一個(gè)類(lèi)只能有一個(gè)對(duì)象
2\ 實(shí)現(xiàn)三私一共
3\ instanceof:判斷對(duì)象是否是類(lèi)數(shù)據(jù)類(lèi)型

2 . 工廠模式

特點(diǎn):

傳遞不同的參數(shù)獲取不同的對(duì)象
<?php
class ProductsA {
    public function show() {
        echo '商品A<br>';
    }
}
class ProductsB {
    public function show() {
        echo '商品B<br>';
    }
}
//工廠模式
class ProductsFactory {
    public static function create($num) {   //傳遞不同的參數(shù)獲取不同的對(duì)象
        switch($num) {
            case 1:
                return new ProductsA;
            case 2:
                return new ProductsB;
            default:
                return null;
        }
    }
}
//測(cè)試
$obj1= ProductsFactory::create(1);
$obj2= ProductsFactory::create(2);
$obj1->show();      //商品A
$obj2->show();      //商品B

3 . 策略模式

特點(diǎn):

傳遞不同的參數(shù),調(diào)用不同的方法;
<?php
class Walk {
    public function method() {
        echo '走著去<br>';
    }
}
class Bus {
    public function method() {
        echo '坐車(chē)去<br>';
    }
}
class Strategy {
    public function way($obj) { 
        $obj->method(); //傳遞不同的參數(shù)調(diào)用不同的方法
    }
}
//測(cè)試
$strategy=new Strategy();
$strategy->way(new Walk); //走著去
$strategy->way(new Bus); // 坐車(chē)去
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容