91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中策略設計模式的實現方法及應用場景是什么

發布時間:2023-04-26 17:02:58 來源:億速云 閱讀:120 作者:iii 欄目:開發技術

這篇文章主要介紹“Java中策略設計模式的實現方法及應用場景是什么”,在日常操作中,相信很多人在Java中策略設計模式的實現方法及應用場景是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java中策略設計模式的實現方法及應用場景是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

介紹

Java策略模式(Strategy Pattern)是一種行為設計模式,它允許再運行時動態選擇算法的行為.策略模式通過將算法封裝在可互換的策略對象中,使得客戶端代碼能夠輕松地切換算法,而無需修改原始代碼.在策略模式中,每個算法都被實現為一個單獨的策略類,這些策略類都實現了相同的接口,從而允許它們在運行時互相替換.

在Java中,可以使用接口或抽象類來定義策略接口.然后對于每個算法,都可以創建一個具體的實現類來實現這個接口.客戶端代碼可以通過將不同的策略對象傳遞給上下文對象來選擇不同的算法.

Java策略模式通常包括以下三種角色:

  • Context(上下文):是策略模式中的核心類,用來管理具體策略實現類的創建,配置和執行,以及在運行時動態地選擇具體的策略實現類.

  • Strategy(策略):是一個接口或抽象類,定義了策略實現類的通用方法和屬性,具體策略實現類必須實現這些方法和屬性.

  • ConcreteStrategy(具體策略):是策略接口的實現類,根據具體業務需求實現了策略接口定義的方法和屬性.可以又多個具體策略實現類,Context類在運行時根據需要動態地選擇具體的策略實現類.

實現

支付策略接口(Strategy)

public interface PaymentStrategy {
    /**
     * 支付
     *
     * @param amount
     */
    void pay(double amount);
}

微信支付和支付寶支付(ConcreteStrategy)

public class WechatPayment implements PaymentStrategy {
    private String username;
    private String password;
    public WechatPayment(String username, String password) {
        this.username = username;
        this.password = password;
    }
    /**
     * 支付
     *
     * @param amount
     */
    @Override
    public void pay(double amount) {
        System.out.println("微信支付:" + amount + "元");
    }
}
public class AliPayment implements PaymentStrategy{
    private String username;
    private String password;
    public AliPayment(String username, String password) {
        this.username = username;
        this.password = password;
    }
    /**
     * 支付
     *
     * @param amount
     */
    @Override
    public void pay(double amount) {
        System.out.println("支付寶支付:" + amount + "元");
    }
}

購物車類(Context)

public class ShoppingCart {
    private List<Item> itemList;
    private PaymentStrategy paymentStrategy;
    public ShoppingCart() {
        itemList = new ArrayList<>();
    }
    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }
    public void addItem(Item item){
        itemList.add(item);
    }
    public void removeItem(Item item){
        itemList.remove(item);
    }
    public double calculateTotal(){
        return itemList.stream().mapToDouble(Item::getPrice).sum();
    }
    public void pay(){
        paymentStrategy.pay(calculateTotal());
    }
}

商品類

@Data
public class Item {
    private String name;
    private double price;
    public Item(String name, double price) {
        this.name = name;
        this.price = price;
    }
}

測試

public class Demo {
    public static void main(String[] args) {
        ShoppingCart shoppingCart = new ShoppingCart();
        Item item1 = new Item("item1",10);
        Item item2 = new Item("item2",10);
        shoppingCart.addItem(item1);
        shoppingCart.addItem(item2);
        shoppingCart.setPaymentStrategy(new AliPayment("aliPayUsername","aliPayPassword"));
        shoppingCart.pay();
        shoppingCart.setPaymentStrategy(new WechatPayment("wechatUsername","wechatPassword"));
        shoppingCart.pay();
    }
}

Java中策略設計模式的實現方法及應用場景是什么

上面代碼演示了一個簡單的策略模式實現.我們定義了一個PaymentStrategy接口,它表示所有支付方式的共同操作.我們還定義了兩個實現該接口的具體類AliPayment和WechatPayment,它們分別表示使用支付寶和微信支付的操作.我們還定義了一個ShoppingCart類,該類使用PaymentStrategy接口來表示支付方式,并根據需要切換實際的支付方式.

在我們的Demo類中,我們創建了一個ShoppingCart對象,并添加了兩個Item對象,我們然后選擇使用AliPayment進行支付,并調用pay()方法.我們接下來又選擇使用WechatPayment進行支付,并再次調用pay()方法.

這樣,我們就可以輕松地在不同的支付方式之間進行切換,并根據需要添加新的支付方式.

到此,關于“Java中策略設計模式的實現方法及應用場景是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平塘县| 清流县| 县级市| 宁波市| 宝应县| 正镶白旗| 西乡县| 庄浪县| 安岳县| 肥东县| 辛集市| 东源县| 庄河市| 梁平县| 新宾| 上饶市| 崇州市| 南溪县| 通辽市| 南通市| 松溪县| 贺州市| 马山县| 内黄县| 黔西县| 江口县| 富源县| 竹山县| 绥中县| 青海省| 噶尔县| 方城县| 怀柔区| 新蔡县| 平乡县| 天等县| 德清县| 承德市| 应城市| 大荔县| 浦东新区|