<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 功能強大 支持多語言、二開方便! 廣告
                ?**定義**:(Facada Pattern)要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行, 門面模式提供一個高層次的接口,使得子系統更易于使用。 ## 一般模式: ![](https://box.kancloud.cn/2016-06-06_5755340c466ea.jpg) Facade門面角色 ---|客戶端可以調用這個角色的方法,此角色知道子系統的所有功能和責任。 subSystem子系統角色 ---|可以同時一個或多個子系統。每個子系統都不是一個單獨的類,而是一個類的集合 子系統并不知道門面的存在,對于子系統而言,門面僅僅是另一個客戶端而已。 模型圖: ![](https://box.kancloud.cn/2016-06-06_5755340c5f3dc.jpg) ~~~ public class FacadeTest { public static void main(String[] args) { //獲取門面對象 Facade f = new Facade(); //調用子系統A的方法 f.methodA(); } } /** * 子系統A,在具體的項目中 * 子系統并不是一個類,而是一個類的集合,這里只是簡單地 * 以類來代替子系統。 * @author admin * */ class ClassA{ public void doSomethingA(){ System.out.println("子系統A的具體功能..."); } } /** * 子系統A,在具體的項目中 * 子系統并不是一個類,而是一個類的集合,這里只是簡單地 * 以類來代替子系統。 * @author admin * */ class ClassB{ public void doSomethingB(){ System.out.println("子系統B的具體功能..."); } } /** * 門面,是外界訪問子系統中的具體功能的入口。 * @author admin * */ class Facade{ private ClassA classA = new ClassA(); private ClassB classB = new ClassB(); //提供給外部訪問子系統的方法 public void methodA(){ this.classA.doSomethingA(); } //提供給外部訪問子系統的方法 public void methodB(){ this.classB.doSomethingB(); } } ~~~ ## 一個例子: 郵寄一封信要經過一下四個步驟:寫信的內容、信的封面、封好、投遞到郵箱。 這寫必要的步驟相當于一個系統,客戶端可以通過門面類來調用這個系統的方法。 ![](https://box.kancloud.cn/2016-06-06_5755340c7a085.jpg) ~~~ public class FacadeT { public static void main(String[] args) { //獲取門面類 ModenPostOffice mpo = new ModenPostOffice(); mpo.sendMessage("您好!\nOracle,I want to change the world including my lover!", "2020年的我!"); } } interface ILetterProcess{ //寫信的內容 void wirteLetter(String context); //信的封面 void fillEnvelope(String address); //裝封好信件 void letterInotoEnvolope(); //投遞到郵箱 void sendLetter(); } /** * 信件方法的具體實現類,子系統內部的某個類。 * @author admin * */ class LetterProcessImpl implements ILetterProcess{ @Override public void wirteLetter(String context) { System.out.println("信件的內容是:"+context); } @Override public void fillEnvelope(String address) { System.out.println("信件的地址是:"+address); } @Override public void letterInotoEnvolope() { System.out.println("裝封好了信件..."); } @Override public void sendLetter() { System.out.println("發送信件..."); } } /** * 門面類,為外部系統訪問內部系統提供接口。 * @author admin * */ class ModenPostOffice{ private ILetterProcess letter = new LetterProcessImpl(); // public void sendMessage(String context,String address){ //先寫好信 this.letter.wirteLetter(context); //在寫好地址 this.letter.fillEnvelope(address); //找到郵局,投遞信件 this.letter.letterInotoEnvolope(); //發送信件 this.letter.sendLetter(); } } ~~~ **門面模式的優點:** ---|減少系統的相互依賴 ---|提高靈活性 ---|提高安全性 **門面模式的缺點:** ---|不符合開閉原則 **門面模式的使用場景** ---|為一個復雜的模塊或子系統提供一個共外界訪問的接口 ---|子系統相對獨立---外界對子系統的訪問只要黑箱操作即可 ---|預防低水平人員帶來的風險擴散
                  <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>

                              哎呀哎呀视频在线观看