国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android設計模式之策略模式詳解

2019-10-22 18:29:51
字體:
來源:轉載
供稿:網友

策略模式

一個功能的效果,有不同的算法與策略,根據不同的選擇選擇不同的結果。

簡單來說,只要你寫過程序就用過策略模式,不要說沒用過,難道if-else(switch)沒用過嗎…..

if-else在其實就是一個策略模式的體現,根據不同的選擇處理不同的結果。

問題

如果把所有的方法全部用if-else(switch)來處理,從功能上說沒問題,但是沖代碼層面的維護與使用來說,if-else多了之后會讓類變的過于龐大,閱讀不利,修改困難

解決問題

使用策略模式,定義統一接口,每一個不同的功能(if-else)實現接口做一個具體類,外部調用具體類來達到不同的結果。

使用場景

同一個問題,有不同的解決方案
一個類有多個if-else的判斷處理結果
封裝SDK時上層處理結果返回的情況,調用者關心結果,不關注實現過程
列入Android源碼中的動畫的TimeInterpolator,ListView的適配器

代碼實現

有一個商品售賣,在售賣過程中,要根據不同的用戶給予不同的價格(半價,8折,7折等等),在知道用戶的前提下,如何直接給予價格呢?

(一)價格接口的實現

public interface PriceStrategy { int setPrice(int price);}

(二)實現具體的價格類

7折:

public class seventPriceStrategy implements PriceStrategy { @Override public Double setPrice(int price) {  return 0.7 * price; }}

5折:

public class HalfPriceStrategy implements PriceStrategy { @Override public Double setPrice(int price) { return 0.5 * price; }}

(三)價格算法管理類

public class PriceAlgorithm { private PriceStrategy priceStrategy; public PriceStrategy getPriceStrategy() { return priceStrategy; } public void setPriceStrategy(PriceStrategy priceStrategy) { this.priceStrategy = priceStrategy; } public Double getPrice(int price) { if(priceStrategy!=null){  return priceStrategy.setPrice(price); } return null; }}

傳入具體的實現類,獲取返回接口

(四)調用方式

 PriceAlgorithm priceAlgorithm = new PriceAlgorithm(); priceAlgorithm.setPriceStrategy(new HalfPriceStrategy()); System.out.print("/n" + "1塊錢" + "5折后的價格:" + String.valueOf(priceAlgorithm.getPrice(1))); PriceAlgorithm priceAlgorithm2 = new PriceAlgorithm(); priceAlgorithm2.setPriceStrategy(new seventPriceStrategy()); System.out.print("/n" + "2塊錢" + "7折后的價格:" + String.valueOf(priceAlgorithm2.getPrice(2)));

(五)顯示結果

1塊錢5折后的價格:0.5
2塊錢7折后的價格:1.4

總結

使用策略模式之后的維護只需要維護具體的實現類,如果有新增的方式,只需要擴展實現具體類即可,便于維護使用。

github代碼地址

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英德市| 水富县| 常山县| 永仁县| 乐山市| 花莲市| 鄄城县| 丹凤县| 淮阳县| 永泰县| 平阳县| 北川| 达日县| 阜平县| 惠东县| 上高县| 抚宁县| 临泉县| 江孜县| 宁晋县| 临澧县| 沿河| 定日县| 永新县| 五莲县| 黔江区| 湾仔区| 凭祥市| 青铜峡市| 汉源县| 平和县| 葵青区| 永春县| 建水县| 仁寿县| 南江县| 上饶市| 乌兰县| 平乐县| 丹阳市| 锡林浩特市|