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

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

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

      策略模式

      策略(Strategy)模式屬于行為型模式的一種。

      策略模式的核心思想是定義一系列算法,將每個算法封裝起來,并使它們可以互換。策略模式讓算法獨立于使用它的客戶而變化,從而實現了算法族的獨立擴展和替換。

      策略模式指在一個方法中,某些關鍵步驟的算法依賴調用方傳入的策略,傳入不同的策略,即可獲得不同的結果,大大增強了系統的靈活性。

      策略模式的核心思想是在一個計算方法中把容易變化的算法抽出來作為“策略”參數傳進去,如果新增策略的話,則不必修改原有邏輯。

      策略模式適用于以下場景:

      • 當系統中存在多個相似的算法或行為,并且需要在運行時根據條件進行選擇時。
      • 當需要在不同的業務場景下靈活地替換算法,而不影響系統的整體結構時。
      • 當多個類僅在算法或行為上有所不同,使用策略模式可以將它們的變化部分提取出來,避免代碼重復。

      策略模式通常有以下組成部分: 

      • 策略接口(Strategy):定義一個公共接口,聲明所有具體策略類必須實現的方法。
      • 具體策略類(ConcreteStrategy):實現策略接口,封裝具體的算法或業務邏輯。每個具體策略代表一種算法實現。
      • 上下文(Context):維護一個策略對象的引用,客戶端通過上下文來調用策略對象的方法,從而實現行為的切換。

      我們模擬實現一個支付方式的選擇功能,不同的支付方式(如信用卡支付和PayPal支付)封裝為不同的策略。

      1、策略接口:定義支付算法

      // 策略接口:定義支付算法
      public interface PaymentStrategy {
          void pay(int amount);
      }

      2、具體策略類

      // 具體策略類1:信用卡支付
      public class CreditCardPaymentStrategy implements PaymentStrategy {
          private String cardNumber;
          
          public CreditCardPaymentStrategy(String cardNumber) {
              this.cardNumber = cardNumber;
          }
          
          @Override
          public void pay(int amount) {
              System.out.println("Using Credit Card (" + cardNumber + ") to pay " + amount + " dollars.");
          }
      }
      
      // 具體策略類2:PayPal支付
      public class PaypalPaymentStrategy implements PaymentStrategy {
          private String email;
          
          public PaypalPaymentStrategy(String email) {
              this.email = email;
          }
          
          @Override
          public void pay(int amount) {
              System.out.println("Using PayPal (" + email + ") to pay " + amount + " dollars.");
          }
      }

      3、上下文類:購物車(或支付環境)

      // 上下文類:購物車(或支付環境)
      public class ShoppingCart {
          // 持有一個策略對象
          private PaymentStrategy paymentStrategy;
          
          // 設置策略(可在運行時動態切換)
          public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
              this.paymentStrategy = paymentStrategy;
          }
          
          // 結賬時調用支付策略
          public void checkout(int amount) {
              if (paymentStrategy == null) {
                  throw new IllegalStateException("Payment strategy not set.");
              }
              paymentStrategy.pay(amount);
          }
      }

      4、客戶端

      // 客戶端代碼
      public class StrategyPatternDemo {
          public static void main(String[] args) {
              ShoppingCart cart = new ShoppingCart();
              
              // 使用信用卡支付
              cart.setPaymentStrategy(new CreditCardPaymentStrategy("1234-5678-9012-3456"));
              cart.checkout(150);
              
              // 切換為PayPal支付
              cart.setPaymentStrategy(new PaypalPaymentStrategy("user@example.com"));
              cart.checkout(250);
          }
      }

      策略模式的優缺點

      優點:

      • 靈活性高:策略模式允許在運行時更換算法,實現了算法的動態切換。
      • 封裝變化:將變化的算法封裝在獨立的策略類中,遵循了單一職責原則和開閉原則。
      • 消除條件判斷:避免了大量的條件判斷語句,使代碼結構更加清晰。

      缺點:

      • 類的數量增加:每個策略都需要一個單獨的類,當算法較多時,可能會導致類的數量增加。
      • 客戶端必須知道所有策略:有時客戶端需要了解不同策略的細節,并在合適的時機選擇合適的策略,這可能會增加系統的復雜性。

      裝飾模式可以更改對象的外表,策略模式則能夠改變其本質。

      策略模式通過將算法封裝在獨立的策略類中,并在運行時動態選擇算法,提供了一種靈活、可擴展的解決方案,能夠有效地消除冗長的條件語句,提高系統的可維護性和擴展性。熟練掌握策略模式不僅可以優化代碼結構,還可以應對復雜業務場景下的算法替換問題。

      人生一切所謂的苦難,都是比較而言。-- 煙沙九洲?

      posted @ 2025-03-06 22:37  煙沙九洲  閱讀(65)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 五月天免费中文字幕av| 欧美乱码伦视频免费| 欧美不卡无线在线一二三区观| 亚洲精品天堂一区二区| 国产精品亚洲中文字幕| 国产一区二区黄色在线观看| 虎白女粉嫩尤物福利视频| 玉龙| 日韩一区二区三区精品区| 国内精品久久久久影院网站| 亚洲国产精品一区二区第一页| 人人澡超碰碰97碰碰碰| 午夜福利在线观看入口| av一区二区中文字幕| 日韩精品亚洲精品第一页| 思思99热精品在线| 天美麻花果冻视频大全英文版| 国产av一区二区三区精品| 影音先锋啪啪av资源网站| 欧美一本大道香蕉综合视频| 人人爽天天碰天天躁夜夜躁| 日韩伦人妻无码| 亚洲色大成网站www在线| 国产成人影院一区二区三区| 国产成人精品国产成人亚洲| 一区二区亚洲人妻av| 亚洲国产成人久久一区久久| 人妻夜夜爽天天爽三区麻豆av | 丰满少妇被猛烈进出69影院| 日韩 高清 无码 人妻| 日韩AV高清在线看片| 国产成人a在线观看视频免费| 华人在线亚洲欧美精品| 中文字幕在线无码一区二区三区 | 中文字幕成熟丰满人妻| 亚洲精品久久麻豆蜜桃| 99re热视频这里只精品| 国产精品中文字幕视频| 日本一区二区三区免费播放视频站| 中文字幕乱码一区二区免费| 日本不卡码一区二区三区|