<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [toc] ## 舉個例子 > 新生入學, 不知所措? 學長迎新, 一條龍服務 > 不熟悉學校? 找到學長, 照樣把事兒辦了 > 也可以理解成對接 ## 代碼示例 ```php <?php // 入學報到 class Register { public function phpRegister($name) { echo "活動中心:" . $name . "同學報到成功!" . PHP_EOL; } } // 繳費 class Payment { public function pay($name, $money) { echo "繳費中心:" . "收到" . $name . "同學" . strval($money) . "元付款,繳費成功!" . PHP_EOL; } } // 宿舍管理中心(生活中心) class DormitoryManagementCenter { public function provideLivingGoods($name) { echo "生活中心:" . $name . "同學的生活用品已發放。" . PHP_EOL; } } // 宿舍 class Dormitory { public function meetRoommate($name) { echo "宿 舍:" . "大家好!這是剛來的" . $name . "同學,是你們未來需要共度四年的室友!相互認識一下……" . PHP_EOL; } } // 迎新志愿者 class Volunteer { protected $name; protected $register; protected $payment; protected $lifeCenter; protected $dormintory; public function __construct($name) { $this->name = $name; $this->register = new Register(); $this->payment = new Payment(); $this->lifeCenter = new DormitoryManagementCenter(); $this->dormintory = new Dormitory(); } public function welcomeFreshmen($name) { echo "你好," . $name . "同學! 我是新生報到的志愿者" . $this->name . ",我將帶你完成整個報到流程。" . PHP_EOL; $this->register->phpRegister($name); $this->payment->pay($name, 10000); $this->lifeCenter->provideLivingGoods($name); $this->dormintory->meetRoommate($name); } } // 測試 $volunteer = new Volunteer("Frank"); $volunteer->welcomeFreshmen("Tony"); ``` ``` D:\soft\php72\php.exe D:\project\php_dp\index.php 你好,Tony同學! 我是新生報到的志愿者Frank,我將帶你完成整個報到流程。 活動中心:Tony同學報到成功! 繳費中心:收到Tony同學10000元付款,繳費成功! 生活中心:Tony同學的生活用品已發放。 宿 舍:大家好!這是剛來的Tony同學,是你們未來需要共度四年的室友!相互認識一下…… Process finished with exit code 0 ``` ## 代碼說明 1. 迎新志愿者陪同并幫助入學新生完成報到登記、繳納學費、領日用品、入住宿舍等一系列的報到流程。 2. 新生不用知道具體的報到流程,不用去尋找各個場地;只要跟著志愿者走,到指定的地點,根據志愿者的指導,完成指定的任務即可。 3. 志愿者雖然不是直接提供這些報到服務,但也相當于間接提供了報到登記、繳納學費、領日用品、入住宿舍等一條龍的服務,幫新生減輕了不少麻煩和負擔。 4. 在這里志愿者就相當于一個對接人,將復雜的業務通過一個對接人來提供一整套統一的(一條龍式的)服務,讓用戶不用關心內部復雜的運行機制。 ## 什么是外觀模式? > 為子系統中的一組接口提供一個一致的界面稱為外觀模式 > 外觀模式定義了一個高層接口,這個接口使得這一子系統更容易使用。 > 外觀模式的核心思想:用一個簡單的接口來封裝一個復雜的系統,使這個系統更容易使用。 ![](https://box.kancloud.cn/5e596f1b833a8591f6efbabee63d3905_486x510.png) ## 設計要點 1. **外觀角色(Facade)**: 為子系統封裝統一的對外接口,如同子系統的一個門面。這個類一般不負責具體的業務邏輯,只是一個委托類,具體的業務邏輯由子系統完成。 1. **子系統(SubSystem)**: 由多個類組成的具有某一特定功能的子系統。可以是第三方庫,也可以是自己的基礎庫,還可能是一個子服務,為整個系統提供特定的功能或服務。 ## 優缺點 **優點**: 1. 實現了子系統與客戶端之間的松耦合關系,這使得子系統的變化不會影響到調用它的客戶端。 1. 簡化了客戶端對子系統的使用難度,客戶端(用戶)無須關心子系統的具體實現方式,而只需要和外觀進行交互即可。 1. 為不同的用戶提供了統一的調用接口,方便了系統的管理和維護。 **缺點**: 1. 因為統一了調用的接口,降低了系統功能的靈活性。 ## 應用場景 1. 當要為一個復雜子系統提供一個簡單接口時; 1. 客戶程序與多個子系統之間存在很大的依賴性,引入外觀類將子系統與客戶以及其他子系統解耦,可以提高子系統的獨立性和可移植性; 1. 在層次化結構中,可以使用外觀模式定義系統中每一層的入口,層與層之間不直接產生聯系,而通過外觀類建立聯系,降低層之間的耦合度。
                  <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>

                              哎呀哎呀视频在线观看