国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP設計模式

caige / 2750人閱讀

摘要:簡單工廠模式共同接口服務器端開發不知道將會被誰調用連接上了連接上了客戶端調用時,不知道工廠類中實例化的幾種類,只需要傳遞參數就可以工廠模式共同接口服務器端開發不知道將會被誰調用連接上了連接上了服務器端添加了類前面的代碼不用修改連接上了客戶

簡單工廠模式
// 共同接口
interface db{
    function conn();
}

// 服務器端開發(不知道將會被誰調用)
class dbsqlite implements db{
    public function conn(){
        echo "連接上了sqlite";
    }
}

class dbmysql implements db{
    public function conn(){
        echo "連接上了mysql";
    }
}


class Factory{
    public static function creatDB($type){
        if($type == "mysql"){
            return new dbmysql();
        }elseif($type == "sqlite"){
            return new dbsqlite();
        }else{
            throw new Exception("Error DB type", 1);
        }
    }
}
// 客戶端調用時,不知道工廠類中實例化的幾種類,只需要傳遞$type參數就可以
$db = Factory::creatDB("mysql");
$db->conn();
工廠模式
// 共同接口
interface db{
    function conn();
}

interface Factory{
    function createDB();
}

// 服務器端開發(不知道將會被誰調用)
class dbsqlite implements db{
    public function conn(){
        echo "連接上了sqlite";
    }
}

class dbmysql implements db{
    public function conn(){
        echo "連接上了mysql";
    }
}

class mysqlFactory implements Factory{
    public function createDB(){
        return new dbmysql();
    }
}

class sqliteFactory implements Factory{
    public function createDB(){
        return new dbsqlite();
    }
}


// =====服務器端添加了Oracle類
// 前面的代碼不用修改
class dboracle implements db{
    public function conn(){
        echo "連接上了oracle";
    }
}

class oracleFactory implements Factory{
    public function createDB(){
        return new dboracle();
    }
}

// =====客戶端開始====
$fact = new mysqlFactory();
$db = $fact->createDB();
$db->conn();

$fact = new sqliteFactory();
$db = $fact->createDB();
$db->conn();

$fact = new oracleFactory();
$db = $fact->createDB();
$db->conn();

// 在面向對象設計法則中,重要的開閉原則--對于修改是封閉的,對于擴展是開放的
單例模式
// 第二步 封鎖new操作
class sigle{
    protected static $ins = null;
    // 方法前加final,則方法不能被覆蓋,在類前加final,則不能被繼承
    final protected function __contruct(){
        
    }

    public static function getIns(){
        if(self::$ins === null){
            self::$ins = new self();
        }
        return self::$ins;
    }

    // 防止被克隆
    final protected function __clone(){}
}

$s1 = sigle::getIns();
// $s2 = clone $s1;
$s2 = sigle::getIns();
if($s1 === $s2){
    echo "同一個對象";
}else{
    echo "不是同一個對象";
}
觀察者模式
class User implements SplSubject{
    public $lognum;
    public $hobby;

    protected $observers = null;

    public function __construct($hobby){
        $this->lognum = rand(1,10);
        $this->hobby  = $hobby;
        $this->observers = new SplObjectStorage();
    }

    public function login(){
        $this->notify();
    }

    public function attach(SplObserver $observer){
        $this->observers->attach($observer);
    }

    public function detach(SplObserver $observer){
        $this->observers->detach($observer);
    }

    public function notify(){
        $this->observers->rewind();
        while ($this->observers->valid()) {
            $observer = $this->observers->current();
            $observer->update($this);
            $this->observers->next();
        }
    }
}


class security implements SplObserver{
    public function update(SplSubject $subject){
        if($subject->lognum<3){
            echo "這是第".$subject->lognum."次安全登錄";
        }else{
            echo "這是第".$subject->lognum."次登錄,異常";
        }
    }
}

class ad implements SplObserver{
    public function update(SplSubject $subject){
        if($subject->hobby == "sports"){
            echo "籃球";
        }else{
            echo "好好學習";
        }
    }
}

// 實施觀察
$user = new User("sports");
$user->attach(new security());
$user->attach(new ad());
$user->login();
裝飾器模式
// 裝飾器模式做文章修飾功能
class baseArt{
    protected $content;
    protected $art = null;

    public function __construct($content){
        $this->content = $content;
    }

    public function decorator(){
        return $this->content;
    }
}

// 編輯文章摘要
class editorArt extends baseArt{
    public function __construct(baseArt $art){
        $this->art = $art;
        $this->decorator();
    }

    public function decorator(){
        //return $this->art->content .= "小編摘要";
        return $this->content = $this->art->decorator() . "小編摘要";
    }
}

// SEO添加內容
class SEOart extends baseArt{
    public function __construct(baseArt $art){
        $this->art = $art;
        $this->decorator();
    }
    public function decorator(){
        return $this->content = $this->art->decorator() . "SEO關鍵詞";
    }
}

// 無論是哪個先編輯,順序都可以進行交換
$x = new SEOart(new editorArt(new baseArt("天天向上")));
$y = new editorArt(new SEOart(new baseArt("天天向上")));
echo $x->decorator();
echo "
"; echo $y->decorator();

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30944.html

相關文章

  • PHP基礎

    摘要:分別為適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。設計模式五適配器模式適配器模式將某個對象的接生成器和協程的實現在這篇文章中,作者針對那些比較難以理解的概念,以一個更為通俗的方式去講明白。。 PHP 源碼注解 PHP 的詳細源碼注解 PHP 字符串操作整理 一些有關字符串的常用操作。 Redis 常見七種使用場景 (PHP 實戰) 這篇文章主要介紹利用 R...

    HtmlCssJs 評論0 收藏0
  • PHP 運行模式

    摘要:接下來會對其中五個比較常見的運行模式進行說明。模式是目前主流的服務運行模式,擁有高效可靠的性能,推薦大家使用。由于微軟的排他性,只能運行于環境。 SAPI 這里所說的 PHP 運行模式, 其實指的是 SAPI (Server Application Programming Interface,服務端應用編程端口 )。SAPI 為 PHP 提供了一個和外部通信的接口, PHP 就是通過這...

    OnlyMyRailgun 評論0 收藏0
  • php資料集

    摘要:簡單字符串緩存實戰完整實戰種設計模式設計模式是面向對象的最佳實踐成為專業程序員路上用到的各種優秀資料神器及框架成為一名專業程序員的道路上,需要堅持練習學習與積累,技術方面既要有一定的廣度,更要有自己的深度。 微型新聞系統的開發(PHP 5.4 + MySQL 5.5) 微型新聞系統的開發(PHP 5.4 + MySQL 5.5) 九個很有用的 PHP 代碼 php 代碼 國內值得關注的...

    RobinQu 評論0 收藏0
  • PHP相關

    摘要:的機器學習庫的機器學習庫,包括算法交叉驗證神經網絡等內容。在即將到來的大會上,她將和大家分享在機器學習領域的全新可能。入門總結入門相關,如安裝配置基本使用等。 基于 Swoole 開發 PHP 擴展 Swoole-1.9.7 增加了一個新特性,可以基于 Swoole 使用 C++ 語言開發擴展模塊,在擴展模塊中可以注冊 PHP 內置函數和類。現在可以基于 Swoole 來編寫 PHP ...

    lewinlee 評論0 收藏0
  • PHP 運行模式與運行原理

    摘要:當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。子進程完成處理后將標準輸出和錯誤信息從同一連接返回。子進程接著等待并處理來自進程管理器運行在中的下一個連接。 目前常見的4種PHP運行模式 CGI通用網關接口模式 FAST-CGI模式 CLI命令行模式 模塊模式 運行模式 CGI通用網關接口模式 每有一個用戶請求,都會先要創建cgi的子進程,然后處理請求,處理完后結束這個子進程...

    Pocher 評論0 收藏0
  • workerman / 小談PHP中的幾種運行模式

    摘要:話說當下一共有種運行模式,分別是和模塊模式。使用,全稱進程管理器進行管理。工作原理啟動時載入進程管理器進程管理器自身初始化,啟動多個解釋器進程并等待來自的連接當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。 我們知道 workerman 程序需要在php-cli模式下運行,也就是命令行模式,這塊我們有必要了解一下。 話說PHP當下一共有4種運行模式,分別是CGI、FastCGI、...

    darkbaby123 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<