首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 策略模式深度解析:從支付場景看算法封裝與互換

     編輯:Java 綜合教學

策略模式核心概念

策略模式定義了一組算法,將每個算法封裝起來,並使它們之間可以互相替換。這種模式讓算法的變化不會影響到使用算法的客戶端,實現了「開閉原則」——對擴展開放,對修改關閉。

實戰場景:電商支付系統

以網購下單為例,用戶可選擇微信支付、支付寶、網銀等多種支付方式。這裡的「支付方式」就是一組可互換的算法。我們通過定義統一介面,將具體支付邏輯封裝在不同實現類中,實現運行時動態切換。

代碼實現詳解

1. 定義支付策略介面

/** 
 * 支付策略介面 
 */ 
public interface PayStrategy { 
    /** 支付方法 */ 
    void pay(); 
}

2. 具體策略實現類

微信支付:

/** 
 * 微信支付方式 
 */ 
public class WeiXinPayStrategy implements PayStrategy { 
    public void pay() { 
        System.out.println("正在使用微信支付方式..."); 
    } 
}

支付寶支付:

/** 
 * 支付寶支付方式 
 */ 
public class AlipayStrategy implements PayStrategy { 
    public void pay() { 
        System.out.println("正在使用支付寶支付方式..."); 
    } 
}

網銀支付:

/** 
 * 網銀支付方式 
 */ 
public class CyberBankPayStrategy implements PayStrategy { 
    public void pay() { 
        System.out.println("正在使用網銀支付方式..."); 
    } 
}

3. 環境角色(消費者類)

public class Custom { 
    public void buy() { 
        System.out.println("已購買一雙襪子,準備去支付..."); 
    } 
    
    /** 支持多種支付方式 */ 
    public void pay(PayStrategy payStrategy) { 
        payStrategy.pay(); 
    } 
}

4. 客戶端測試

public class Client { 
    public static void main(String[] args) { 
        Custom custom = new Custom(); 
        custom.buy(); 
        // 此處可靈活切換支付方式 
        PayStrategy weixinPay = new WeiXinPayStrategy(); 
        custom.pay(weixinPay); 
    } 
}

運行結果

已購買一雙襪子,準備去支付... 
正在使用微信支付方式... 

模式優勢總結

  • 封裝變化:將支付算法封裝在獨立類中,新增支付方式無需修改現有代碼
  • 運行時切換:客戶端可動態選擇策略,如根據用戶偏好或優惠活動切換
  • 消除條件判斷:避免大量 if-else 或 switch-case,提高代碼可維護性
  • 符合單一職責:每個策略類只負責一種支付邏輯

適用場景

當系統需要在不同條件下採取不同行為,且這些行為邏輯相對獨立、可互換時,策略模式是理想選擇。常見於:支付系統、排序算法切換、壓縮格式選擇、路由算法選擇等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved