<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] [PHP 設計模式全集](https://learnku.com/docs/php-design-patterns/2018) ## 單例模式 `instance` * 有多種實現模式,如餓漢、懶漢、登記、注冊、雙重鎖等 > * 三私一公: > * * 私有(`private`)的靜態屬性,存放實例化的類 > * * 私有(`private`)的構造方法(`__constroller`),禁止外部實例化 > * * 私有(`private`)的克隆方法(`__clone`),禁止外部克隆類 > * * 公共(`public`)的靜態方法,返回唯一實例的一個引用。 > * 餓漢模式: > * * 在類加載的時候就實例化,并且創建單例對象。 > * * 在線程還沒出現之前就已經實例化了,因此餓漢式線程一定是安全的 > * * 占用內存空間,用空間換時間,執行效率高 > * 懶漢模式: > * * 默認不會實例化,外部什么時候調用什么時候`new` > * * 懶漢式加載是在使用時才會去`new` 實例的,那么`new`的時候是一個動態的過程,并發情況下可能會出現多個,那就是加`同步鎖`,避免這種情況發生。 > * * 懶漢式什么時候需要什么時候實例化,相對來說不浪費內存。 ``` class Config { private static $instance = null; private function __construct(){} private function __clone(){} public static function getInstance() { //檢測當前類屬性$instance是否已經保存了當前類的實例 if (self::$instance == null) { //如果沒有,則創建當前類的實例 self::$instance = new self(); } //如果已經有了當前類實例,就直接返回,不要重復創建類實例 return self::$instance; } } ``` ## 工廠模式 `Factory` * 一個類通過本身的靜態方法來,實例化一個類并返回一個實例對象; ## 策略模式 ## 觀察模式 ## 注冊模式 * 框架容器使用的是 注冊模式 * 解決全局共享和交換對象。已經創建好的對象,掛在到某個全局可以使用的數組上,在需要使用的時候,直接從該數組上獲取即可。將對象注冊到全局的樹上。任何地方直接去訪問。 ``` <?php class Register { protected static $objects; public function set($alias,$object)//將對象注冊到全局的樹上 ????{ self::$objects[$alias]=$object;//將對象放到樹上 ????} public static function get($name) ????{ returnself::$objects[$name];//獲取某個注冊到樹上的對象 ????} public function __unset($alias) ????{ unset(self::$objects[$alias]);//移除某個注冊到樹上的對象。 ????} } ``` ## 適配器模式 * 定義接口,繼承接口類必須實現接口方法 * 例:PHP中的數據庫操作有MySQL,MySQLi,PDO三種,可以用適配器模式統一成一致,使不同的數據庫操作,統一成一樣的API ``` <?php interfaceIDatabase { function connect($host,?$user,?$passwd,?$dbname); function query($sql); function close(); } ``` ## 原型模式 ## 裝飾器模式
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看