亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android設(shè)計(jì)模式之策略模式詳解

 更新時(shí)間:2017年08月18日 14:06:12   作者:Allure丶  
這篇文章主要為大家詳細(xì)介紹了Android設(shè)計(jì)模式之策略模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

策略模式

一個(gè)功能的效果,有不同的算法與策略,根據(jù)不同的選擇選擇不同的結(jié)果。

簡(jiǎn)單來(lái)說(shuō),只要你寫過程序就用過策略模式,不要說(shuō)沒用過,難道if-else(switch)沒用過嗎…..

if-else在其實(shí)就是一個(gè)策略模式的體現(xiàn),根據(jù)不同的選擇處理不同的結(jié)果。

問題

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

解決問題

使用策略模式,定義統(tǒng)一接口,每一個(gè)不同的功能(if-else)實(shí)現(xiàn)接口做一個(gè)具體類,外部調(diào)用具體類來(lái)達(dá)到不同的結(jié)果。

使用場(chǎng)景

同一個(gè)問題,有不同的解決方案
一個(gè)類有多個(gè)if-else的判斷處理結(jié)果
封裝SDK時(shí)上層處理結(jié)果返回的情況,調(diào)用者關(guān)心結(jié)果,不關(guān)注實(shí)現(xiàn)過程
列入Android源碼中的動(dòng)畫的TimeInterpolator,ListView的適配器

代碼實(shí)現(xiàn)

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

(一)價(jià)格接口的實(shí)現(xiàn)

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

(二)實(shí)現(xiàn)具體的價(jià)格類

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;
 }
}

(三)價(jià)格算法管理類

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;
 }
}

傳入具體的實(shí)現(xiàn)類,獲取返回接口

(四)調(diào)用方式

 PriceAlgorithm priceAlgorithm = new PriceAlgorithm();
 priceAlgorithm.setPriceStrategy(new HalfPriceStrategy());
 System.out.print("\n" + "1塊錢" + "5折后的價(jià)格:" + String.valueOf(priceAlgorithm.getPrice(1)));


 PriceAlgorithm priceAlgorithm2 = new PriceAlgorithm();
 priceAlgorithm2.setPriceStrategy(new seventPriceStrategy());
 System.out.print("\n" + "2塊錢" + "7折后的價(jià)格:" + String.valueOf(priceAlgorithm2.getPrice(2)));


(五)顯示結(jié)果

1塊錢5折后的價(jià)格:0.5
2塊錢7折后的價(jià)格:1.4

總結(jié)

使用策略模式之后的維護(hù)只需要維護(hù)具體的實(shí)現(xiàn)類,如果有新增的方式,只需要擴(kuò)展實(shí)現(xiàn)具體類即可,便于維護(hù)使用。

github代碼地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實(shí)用小技巧之利用Lifecycle寫出更好維護(hù)的代碼

    Android實(shí)用小技巧之利用Lifecycle寫出更好維護(hù)的代碼

    lifecycle是一個(gè)類,用于存儲(chǔ)有關(guān)組件(如Activity或Fragment)的生命周期狀態(tài)的信息,并允許其他對(duì)象觀察此狀態(tài),下面這篇文章主要給大家介紹了關(guān)于Android實(shí)用小技巧之利用Lifecycle寫出更好維護(hù)的代碼的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Kotlin?ContentProvider使用方法詳解

    Kotlin?ContentProvider使用方法詳解

    ContentProvider內(nèi)容提供者,主要用于再不同的應(yīng)用程序之前實(shí)現(xiàn)數(shù)據(jù)共享的功能,它提供了一套完整的機(jī)制,允許一個(gè)程序訪問另外一個(gè)程序的數(shù)據(jù),同時(shí)還能保證數(shù)據(jù)的安全性
    2022-12-12
  • Android中ListView如何分頁(yè)加載數(shù)據(jù)

    Android中ListView如何分頁(yè)加載數(shù)據(jù)

    這篇文章主要介紹了Android中ListView如何分頁(yè)加載數(shù)據(jù),本文就結(jié)合實(shí)例來(lái)演示一下使用ListView獲取數(shù)據(jù)的過程,需要的朋友可以參考下
    2015-12-12
  • android配合viewpager實(shí)現(xiàn)可滑動(dòng)的標(biāo)簽欄示例分享

    android配合viewpager實(shí)現(xiàn)可滑動(dòng)的標(biāo)簽欄示例分享

    本文主要介紹了android實(shí)現(xiàn)可滑動(dòng)的標(biāo)簽欄示例,配合viewpager作為標(biāo)簽欄,且可以設(shè)置每頁(yè)顯示的標(biāo)簽個(gè)數(shù),超出可滑動(dòng)顯示,需要的朋友可以參考下
    2014-02-02
  • Android?Java?try?catch?失效問題及解決

    Android?Java?try?catch?失效問題及解決

    這篇文章主要介紹了Android?Java?try?catch?失效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Android繪制旋轉(zhuǎn)動(dòng)畫方法詳解

    Android繪制旋轉(zhuǎn)動(dòng)畫方法詳解

    這篇文章主要介紹了Android如何采用RotateAnimation繪制一個(gè)旋轉(zhuǎn)動(dòng)畫,文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試一試
    2022-01-01
  • Android app開發(fā)中的Fragment入門學(xué)習(xí)教程

    Android app開發(fā)中的Fragment入門學(xué)習(xí)教程

    這篇文章主要介紹了Android app開發(fā)中的Fragment入門學(xué)習(xí)教程,包括Fragment的創(chuàng)建和XML布局文件中的Fragment定義等,需要的朋友可以參考下
    2016-02-02
  • 淺談Android PathMeasure詳解和應(yīng)用

    淺談Android PathMeasure詳解和應(yīng)用

    本篇文章主要介紹了淺談Android PathMeasure詳解和應(yīng)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-01-01
  • 詳解Flutter?響應(yīng)式狀態(tài)管理框架GetX

    詳解Flutter?響應(yīng)式狀態(tài)管理框架GetX

    這篇文章主要為大家介紹了Flutter?響應(yīng)式狀態(tài)管理框架GetX詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Android ViewPager撤消左右滑動(dòng)切換功能實(shí)現(xiàn)代碼

    Android ViewPager撤消左右滑動(dòng)切換功能實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android ViewPager撤消左右滑動(dòng)切換功能實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2017-04-04

最新評(píng)論