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

輕松掌握Java策略模式

 更新時間:2016年09月29日 11:26:53   作者:斷了聯(lián)系  
這篇文章主要幫助大家輕松掌握Java策略模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

定義:一個類的行為或其算法可以在運行時更改。在策略模式中,我們創(chuàng)建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執(zhí)行算法。

特點:

    1、算法可以自由切換。

    2、避免使用多重條件判斷。

    3、擴展性良好。

企業(yè)級開發(fā)和常用框架中的應(yīng)用:java.servlet.http.HttpServlet的service方法

實例:對兩個數(shù)的操作行為。

public class Demo {

 public static void main(String[] args) {
 Strategy strategy1 = new StrategyAdd();
 Strategy strategy2 = new StrategyDiv();
 Context context1 = new Context(strategy1);
 context1.execute(10, 5);
 context1 = new Context(strategy2);
 context1.execute(10, 5);
 }
}

interface Strategy{
 public void doOperation(int num1,int num2);
}

class StrategyAdd implements Strategy{

 public void doOperation(int num1, int num2) {
 System.out.println("執(zhí)行加法");
 System.out.println(num1+"+"+num2+"="+(num1+num2));
 }
 
}

class StrategySub implements Strategy{

 public void doOperation(int num1, int num2) {
 System.out.println("執(zhí)行減法");
 System.out.println(num1+"-"+num2+"="+(num1-num2));
 }
 
}

class StrategyMul implements Strategy{

 public void doOperation(int num1, int num2) {
 System.out.println("執(zhí)行乘法");
 System.out.println(num1+"*"+num2+"="+(num1*num2));
 }
 
}

class StrategyDiv implements Strategy{

 public void doOperation(int num1, int num2) {
 System.out.println("執(zhí)行除法");
 System.out.println(num1+"/"+num2+"="+(num1/num2));
 }
 
}

class Context{
 private Strategy strategy;
 
 public Context(Strategy strategy) {
 this.strategy = strategy;
 }
 
 public void execute(int num1,int num2){
 strategy.doOperation(num1, num2);
 }
}

策略模式強調(diào)的是運行時更改,可能在上面的代碼中,這種運行時更改沒有得到很好的體現(xiàn),我們可以假設(shè)一個實際場景,就是當(dāng)一個對象參數(shù)傳到一個方法中來的時候,假設(shè)我們要根據(jù)參數(shù)的不同選擇不同的方法,我們這是會考慮if-else來進行判斷,而策略模式則是對這些if-else進行分類,每一個判斷一個類,然后對象過來了,直接調(diào)用策略接口方法,而對象參數(shù)屬于哪個具體類則是有jvm來判斷,我們不必要去了解對象參數(shù)屬性類型什么的,這樣不僅簡化了我們的開發(fā)工作,而且相比較于if-else,這樣有更好的擴展性。

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

相關(guān)文章

  • Java中SimpleDateFormat的使用方法

    Java中SimpleDateFormat的使用方法

    這篇文章主要為大家詳細介紹了Java中SimpleDateFormat的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java設(shè)計模式之組合模式

    Java設(shè)計模式之組合模式

    這篇文章介紹了Java設(shè)計模式之組合模式,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Nacos1.4.0 Windows10單機模式啟動和集群啟動過程解析

    Nacos1.4.0 Windows10單機模式啟動和集群啟動過程解析

    這篇文章主要介紹了Nacos1.4.0 Windows10單機模式啟動和集群啟動,第一次使用nacos,廢話不多說,記錄下自己啟動Nacos遇到的坑,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • SpringBoot啟動后立即執(zhí)行的幾種方法小結(jié)

    SpringBoot啟動后立即執(zhí)行的幾種方法小結(jié)

    在項目開發(fā)中某些場景必須要用到啟動項目后立即執(zhí)行方式的功能,本文主要介紹了SpringBoot啟動后立即執(zhí)行的幾種方法小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • springboot讀取自定義配置文件節(jié)點的方法

    springboot讀取自定義配置文件節(jié)點的方法

    這篇文章主要介紹了springboot讀取自定義配置文件節(jié)點的方法,本文給大家介紹的非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-05-05
  • 關(guān)于使用Mybatisplus自帶的selectById和insert方法時的一些問題

    關(guān)于使用Mybatisplus自帶的selectById和insert方法時的一些問題

    這篇文章主要介紹了關(guān)于使用Mybatisplus自帶的selectById和insert方法時的一些問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率

    如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率

    這篇文章主要介紹了如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot異常處理之異常顯示的頁面問題

    SpringBoot異常處理之異常顯示的頁面問題

    這篇文章主要介紹了SpringBoot異常處理異常顯示的頁面的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • jvm堆外內(nèi)存排查圖文舉例詳解

    jvm堆外內(nèi)存排查圖文舉例詳解

    Java應(yīng)用程序通過直接方式從操作系統(tǒng)中申請的內(nèi)存,叫堆外內(nèi)存,這篇文章主要給大家介紹了關(guān)于jvm堆外內(nèi)存排查的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • KafkaListener注解的實現(xiàn)機制源碼解析

    KafkaListener注解的實現(xiàn)機制源碼解析

    這篇文章主要為大家介紹了KafkaListener注解的實現(xiàn)機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論