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

                >外觀模式 (Facade Pattern): 為子系統中的一組接口提供一個一致的界面,定義一個高層接口,這個接口使得這一子系統更加容易使用。 ## (一)為什么需要外觀模式 1,開發階段,子系統越來越復雜,增加外觀模式提供一個簡單的調用接口。 2,維護一個大型遺留系統的時候,可能這個系統已經非常難以維護和擴展,但又包含非常重要的功能,為其開發一個外觀類,以便新系統與其交互。 3,外觀模式可以隱藏來自調用對象的復雜性。 ## (二)外觀模式UML圖 ![](https://box.kancloud.cn/425e65612ca38d4db8d5883dac873343_747x415.png) ## (三)簡單實例 比如說我們去醫院就診,醫院有醫生員工系統,有藥品系統,有患者資料系統。但是我們只是在前臺掛個號,就能在其他系統里都看到我們。外觀系統就差不多這樣。 如果沒有掛號系統的話,我們就先要去醫生系統通知一下醫生, 然后去患者系統取一下患者資料交給醫生,再去藥品系統登記一下,最后到藥房領藥。 <?php //醫院醫生員工系統 class DoctorSystem{ //通知就診醫生 static public function getDoctor($name){ echo __CLASS__.":".$name."醫生,掛你號".PHP_EOL; return new Doctor($name); } } //醫生類 class Doctor{ public $name; public function __construct($name){ $this->name = $name; } public function prescribe($data){ echo __CLASS__.":"."開個處方給你".PHP_EOL; return "祖傳秘方,藥到必死"; } } //患者系統 class SufferSystem { static function getData($suffer){ $data = $suffer."資料"; echo __CLASS__.":".$suffer."的資料是這些".PHP_EOL ; return $data; } } //醫藥系統 class MedicineSystem { static function register($prescribe){ echo __CLASS__.":"."拿到處方:".$prescribe."------------通知藥房發藥了".PHP_EOL; Shop::setMedicine("砒霜5千克"); } } //藥房 class shop{ static public $medicine; static function setMedicine($medicine){ self::$medicine = $medicine; } static function getMedicine(){ echo __CLASS__.":".self::$medicine.PHP_EOL; } } //如果沒有掛號系統,我們就診的第一步 //通知就診醫生 $doct = DoctorSystem::getDoctor("顧夕衣"); //患者系統拿病歷資料 $data = SufferSystem::getData("何在"); //醫生看病歷資料,開處方 $prscirbe = $doct->prescribe($data); //醫藥系統登記處方 MedicineSystem::register($prscirbe); //藥房拿藥 Shop::getMedicine(); echo PHP_EOL.PHP_EOL."--------有了掛號系統以后--------".PHP_EOL.PHP_EOL; //掛號系統 class Facade{ static public function regist($suffer,$doct){ $doct = DoctorSystem::getDoctor($doct); //患者系統拿病歷資料 $data = SufferSystem::getData($suffer); //醫生看病歷資料,開處方 $prscirbe = $doct->prescribe($data); //醫藥系統登記處方 MedicineSystem::register($prscirbe); //藥房拿藥 Shop::getMedicine(); } } //患者只需要掛一個號,其他的就讓掛號系統去做吧。 Facade::regist("葉好龍","賈中一"); 外觀模式,也叫門面模式。它多用于在多個子系統之間,作為中間層。用戶通過Facade對象,直接請求工作,省去了用戶調用多個子系統的復雜動作。 外觀模式常舉的一個例子,就是我們買了好多支股票,但是時間有限。盯盤很復雜,我們搞得一團糟。所以,我們干脆買了股票基金。股票基金就好比于外觀模式的Facade對象,而子系統就是股票基金投的各支股票。
                  <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>

                              哎呀哎呀视频在线观看