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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、裝飾模式 動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。 **裝飾模式的出現** 用例子說明:我們想要表達一個人,穿不同衣服,體現不同個性的一個程序。 首先定義一個人Person類;在定義一個抽象的衣服Clothes類,然后有各種衣服的子類。 在客戶端通過實例化“人”,然后再實例化需要的“衣服”,分別調用show方法。 這樣也可以達到目的,但是我們看分析一下客戶端。 ~~~ Person a=new Person("小明"); T恤 t=new T恤(); 垮褲 K=new 垮褲(); 球鞋 q=new 球鞋(); //顯示 a.show(); t.show(); k.show(); q.show(); ~~~ **問題一:**從上述代碼中可以看出這些穿衣服的順序我們可以任意調換,但是一調換,是不是,可能就是另外一種裝扮了,所以這樣寫的代碼結構不穩定。 **問題二:**以上是一種裝扮,如果我要展示N中裝扮呢,我就需要把這些代碼重復N遍。 **為了避免這些問題,所以有了裝飾模式。** 使用裝飾模式可以再客戶端中將裝飾過程進行嵌套封裝,即使同樣的衣服,改變一下順序,就可以穿出兩種風格。而且,穿衣服的件數不一定相同。 同時還減少了代碼的數量,只需要用一個show方法就可以調出嵌套的一系列動作。 **使用裝飾模式:** 需要再衣服類中增加一個Decorate方法,用來給嵌套的要裝飾對象賦值。 代碼顯示: ~~~ Person a=new Person("小明"); T恤 t=new T恤(); 垮褲 K=new 垮褲(); 球鞋 q=new 球鞋(); //動作嵌套 q.decorate(a); k.decorate(q); t.decorate(k); //顯示 t.show(); ~~~ ## 二、類圖 ![](https://box.kancloud.cn/2016-02-18_56c5ce724b74f.png)
                  <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>

                              哎呀哎呀视频在线观看