日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java策略模式實現簡單購物車功能

瀏覽:214日期:2022-08-25 17:54:28

策略模式是一種行為模式。用于某一個具體的項目有多個可供選擇的算法策略,客戶端在其運行時根據不同需求決定使用某一具體算法策略。

策略模式也被稱作政策模式。實現過程為,首先定義不同的算法策略,然后客戶端把算法策略作為它的一個參數。使用這種模式最好的例子是Collection.sort()方法了,它使用Comparator對象作為參數。根據Comparator接口不同實現,對象會被不同的方法排序。

本文例子是,完成一個簡單地購物車,兩種付款策略可供選擇,一為信用卡,另外一種為Paypal。

首先創建策略接口,在本文例子中,付款金額作為參數。

package com.journaldev.design.strategy;public interface PaymentStrategy {public void pay(int amount);}

現在實現使用信用卡及Paypal兩種算法策略的實體類。

package com.journaldev.design.strategy;public class CreditCardStrategy implements PaymentStrategy {private String name;private String cardNumber;private String cvv;private String dateOfExpiry;public CreditCardStrategy(String nm, String ccNum, String cvv, String expiryDate){this.name=nm;this.cardNumber=ccNum;this.cvv=cvv;this.dateOfExpiry=expiryDate;}@Overridepublic void pay(int amount) {System.out.println(amount +' paid with credit/debit card');}}

此時,算法策略已經準備就緒,現在需要實現購物車以及能夠運用付款策略的支付方法。

package com.journaldev.design.strategy;public class Item {private String upcCode;private int price;public Item(String upc, int cost){this.upcCode=upc;this.price=cost;}public String getUpcCode() {return upcCode;}public int getPrice() {return price;}}

package com.journaldev.design.strategy;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.List;public class ShoppingCart {//List of itemsList<Item> items;public ShoppingCart(){this.items=new ArrayList<Item>();}public void addItem(Item item){this.items.add(item);}public void removeItem(Item item){this.items.remove(item);}public int calculateTotal(){int sum = 0;for(Item item : items){sum += item.getPrice();}return sum;}public void pay(PaymentStrategy paymentMethod){int amount = calculateTotal();paymentMethod.pay(amount);}}

注意,購物車的支付方法接受支付策略作為參數,但是不在其內部保存任何實例變量。

一個簡單地測試程序。

package com.journaldev.design.strategy;public class ShoppingCartTest {public static void main(String[] args) {ShoppingCart cart = new ShoppingCart();Item item1 = new Item('1234',10);Item item2 = new Item('5678',40);cart.addItem(item1);cart.addItem(item2);//pay by paypalcart.pay(new PaypalStrategy('myemail@example.com', 'mypwd'));//pay by credit cardcart.pay(new CreditCardStrategy('Pankaj Kumar', '1234567890123456', '786', '12/15'));}}

輸出如下:

50 paid using Paypal.50 paid with credit/debit card

重要點:

此處可以構建策略的實體變量,但是應該盡量避免這種情況。因為需要保證對于特定的任務能夠對應某個具體的算法策略,與Collection.sort()和Array.sort()方法使用comparator作為參數道理類似。 策略模式類似與狀態模式。兩者之間的不同,狀態模式中的Context(環境對象)包含了狀態的實例變量,并且不同的任務依賴同一個狀態。相反,在策略模式中策略是作為一個參數傳遞進方法中,context(環境對象)不需要也不能存儲任何變量。 當一組算法對應一個任務,并且程序可以在運行時靈活的選擇其中一個算法,策略模式是很好的選擇。

這就是全部的Java策略模式,希望你喜歡上它了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩av一区二区三区四区| 99综合视频| 欧美日韩尤物久久| 日韩电影免费网站| 91成人小视频| 亚洲+小说+欧美+激情+另类| 日日摸夜夜添夜夜添国产精品| 亚洲性色av| 福利一区视频| 一区二区精品伦理...| 国产成人精品一区二区三区免费 | 五月天综合网站| 1000部精品久久久久久久久| 九色porny丨国产首页在线| 成人污污视频| 涩涩av在线| 成人精品国产亚洲| 精品72久久久久中文字幕| 高清一区二区| 91精品国产乱码久久久久久久| 欧美黄色网页| 四虎国产精品免费观看| 日韩黄色大片| 日韩午夜av在线| 日韩一区二区三区四区五区| 日韩av网站免费在线| 老鸭窝毛片一区二区三区| 亚洲精品一二三区区别| 在线免费观看亚洲| 麻豆精品国产91久久久久久| 久久视频精品| 99热精品久久| 中文无码日韩欧| 国产精品va视频| 黑人精品一区| 亚洲欧美日韩国产综合精品二区 | 奇米777国产一区国产二区| 91精品国产自产观看在线| 国产精品九九| 成人国产精选| 蜜桃一区二区三区在线观看| 丰满少妇一区| 中文在线不卡| 日韩一区二区三免费高清在线观看 | 国产欧美日本| 欧产日产国产精品视频| 久久激情网站| 久久久久久久久成人| 一区二区三区网站| 成午夜精品一区二区三区软件| 日韩免费久久| 日本在线一区二区三区| 亚洲小说欧美另类婷婷| 欧美在线精品一区| 久久久久久美女精品| 国产精品白丝av嫩草影院| 欧美日韩在线网站| 亚洲激精日韩激精欧美精品| 日韩毛片视频| 国产精品99一区二区三| 日韩和欧美一区二区三区| 午夜欧美精品久久久久久久| 久久精品国产一区二区| 免费看黄色91| 日本在线高清| 美国三级日本三级久久99| 亚洲高清毛片| 日韩免费福利视频| 日韩av一二三| 日韩一区精品| 蜜桃av一区二区三区电影| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 久久免费大视频| 日韩欧乱色一区二区三区在线| 鲁鲁在线中文| 国产免费播放一区二区| 五月婷婷亚洲| 亚洲第一区色| 91精品国产自产在线丝袜啪| 日韩精品一二三| 视频一区二区三区在线| 好看的av在线不卡观看| 中文字幕在线官网| 久久精品一区二区国产| 国产欧美自拍| 日韩av中文字幕一区二区 | 国产欧美日韩精品高清二区综合区 | 欧美精品国产白浆久久久久| 亚洲青青久久| 老鸭窝毛片一区二区三区| 日韩中文字幕不卡| 亚洲三级毛片| 亚洲精品免费观看| 女同性一区二区三区人了人一| 国模 一区 二区 三区| 激情五月综合| 国产综合欧美| 99久久九九| 欧洲激情综合| 制服诱惑一区二区| 亚洲资源网站| 国产精品66| 国产成人精品亚洲日本在线观看| 香蕉国产精品| 精品中文字幕一区二区三区av| 亚洲色诱最新| 亚洲v天堂v手机在线| 国产精品久久久久av蜜臀| 日韩精选在线| 福利精品在线| 91精品啪在线观看国产18| 日韩一区中文| 国产精品久久乐| 成人av三级| 国产精品99一区二区| 色8久久久久| 麻豆久久久久久| 九九久久婷婷| 麻豆免费精品视频| 精品捆绑调教一区二区三区| 日韩综合一区二区三区| 精品精品99| 99精品电影| 日韩黄色大片网站| 国产精品日韩久久久| 一区二区精彩视频| 精品免费在线| 欧美~级网站不卡| 日本视频在线一区| 日韩欧美不卡| 日韩精品亚洲一区二区三区免费| 欧美日韩黑人| 国产精一区二区| 亚洲精品在线观看91| 国产欧美高清| 性欧美长视频| 高清在线一区| 国产日韩欧美| 成人国产精品久久| 日韩国产欧美三级| 激情欧美一区| 高清一区二区| 国产精品白浆| 国产欧美日韩一级| 99日韩精品| 日韩天堂在线| 青青草91视频| 国产亚洲一级| 欧美成人综合| 欧美日韩国产v| 97国产精品| 精品深夜福利视频| 国产精品成人**免费视频| 亚洲国内欧美| 精品国产免费人成网站| 欧美激情五月| 国产精品99久久久久久董美香| 日韩专区欧美专区| 中文字幕一区二区三区日韩精品 | 成人日韩在线| 日韩电影在线视频| 99视频精品全国免费| 水蜜桃久久夜色精品一区的特点| japanese国产精品| 亚洲国产不卡| 欧洲毛片在线视频免费观看| 久久av影院| 美腿丝袜亚洲一区| 国产成人免费| 久久uomeier| 黄色国产精品| 欧美午夜精彩| 久久青草久久| 国产精品视区| 亚洲深深色噜噜狠狠爱网站| 亚洲一区av| 日本欧美在线| 久久男人天堂| av一区二区高清| 蜜桃久久av一区| 日韩欧美中文字幕电影| 91欧美日韩| 日韩一区二区三区免费播放| 影视先锋久久| 在线观看视频免费一区二区三区| 日本精品在线播放| 免费高潮视频95在线观看网站| 视频一区二区三区入口| 国产亚洲精品精品国产亚洲综合| se01亚洲视频| 日韩影院免费视频| 精品中国亚洲| 久久一区二区三区喷水| 亚洲专区视频| 亚洲欧洲美洲av| 日韩精品久久久久久| 福利一区二区三区视频在线观看| 韩日一区二区三区| 国产午夜久久| 精品欠久久久中文字幕加勒比|