<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

       

      1. 頂咖啡問題

        咖啡種類:Espresso,LongBlack

        調料:Milk,Soy

        當需要計算不同種類咖啡和調料組合的價格時

        (1)使用傳統方式

         這樣設計,會有很多類,當需要增加一個單品咖啡或調料時,類的數量就會倍增

       

        (2)優化方式1

         優點:可以把調料放入Drink類中,通過設計調料的boolean類型,表示添加相應的調料,減少類的數量

        缺點:增加或刪除調料種類時,代碼的維護量同樣比較大

        

        (3)裝飾者模式

        動態的將新功能附加到對象上

       

      public abstract class Drink {
      
          public String desc;
      
          private float price;
      
          public String getDesc() {
              return desc;
          }
      
          public void setDesc(String desc) {
              this.desc = desc;
          }
      
          public float getPrice() {
              return price;
          }
      
          public void setPrice(float price) {
              this.price = price;
          }
      
          public abstract float cost();
      }
      public class Coffee extends Drink {
      
          @Override
          public float cost() {
              return super.getPrice();
          }
      }
      public class LongBlack extends Coffee{
      
          public LongBlack(){
              setDesc(" longblack ");
              setPrice(5.0f);
          }
      }
      public class Espresso extends Coffee {
      
          public Espresso(){
              setDesc(" 意大利咖啡 ");
              setPrice(1.0f);
          }
      }
      public class Decorator extends Drink {
      
          private Drink drink;
      
          public Decorator(Drink drink){
              this.drink = drink;
          }
      
          @Override
          public float cost() {
              return drink.cost() + super.getPrice();
          }
      
          @Override
          public String getDesc() {
              return desc + " " + getPrice()+ "&&" +  super.getDesc();
          }
      }
      public class Milk extends Decorator {
      
          public Milk(Drink drink){
              super(drink);
              setDesc( " 牛奶 ");
              setPrice(2.0f);
          }
      }
      public class Soy extends Decorator {
      
          public Soy(Drink drink) {
              super(drink);
              setDesc(" 豆漿 ");
              setPrice(3.0f);
          }
      }
      public class Client {
          public static void main(String[] args) {
              //裝飾者模式下 :
      
              //1. 點一份 longblack
              Drink order = new LongBlack();
              System.out.println("費用1=" + order.cost());
              System.out.println("描述=" + order.getDesc());
      
              //2. order 加入牛奶
              order = new Milk(order);
              System.out.println(" order 加入牛奶 費用2= " + order.cost());
              System.out.println(" order 加入牛奶 描述=" + order.getDesc());
      
              //3. order 加入豆漿
              order = new Soy(order);
              System.out.println(" order 加入豆漿,加入牛奶 費用3= " + order.cost());
              System.out.println(" order 加入豆漿,加入牛奶 描述=" + order.getDesc());
          }
      }

       

      posted on 2024-04-09 21:32  homle  閱讀(13)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产a在视频线精品视频下载| 精品国产亚洲一区二区三区| 亚洲成av人片一区二区| 99久久亚洲综合精品成人网| 人妻精品无码一区二区三区| 亚洲色婷婷综合开心网| 亚洲 a v无 码免 费 成 人 a v| 92精品国产自产在线观看481页| 久久精品熟女亚洲av麻| 精品国产午夜福利在线观看| 国产边打电话边被躁视频| 91中文字幕一区二区| 巨大黑人极品videos精品| 国产一区二区三区亚洲精品| 亚洲国产日韩一区三区| 香港经典a毛片免费观看播放| 欧美私人情侣网站| 秋霞人妻无码中文字幕| 免费午夜无码片在线观看影院| 色九月亚洲综合网| 欧美精品一产区二产区| 久热re这里精品视频在线6| 久久久久无码精品亚洲日韩 | 中文字幕日韩人妻一区| 麻豆麻豆麻豆麻豆麻豆麻豆| 国产亚洲精品久久久久5区| 国产精品揄拍一区二区久久| 国产成人AV在线免播放观看新 | 国产色视频一区二区三区qq号| 亚洲国产精品ⅴa在线观看| 一本一道av无码中文字幕麻豆| 国产无遮挡无码视频在线观看| 欧美白人最猛性xxxxx| 亚洲国产成人AⅤ片在线观看| 日本韩国日韩少妇熟女少妇 | 兰坪| 内射极品少妇xxxxxhd| 精品无码黑人又粗又大又长| 亚洲男女羞羞无遮挡久久丫 | 亚洲 日韩 在线精品| 熟妇人妻激情偷爽文|