色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)模式-策略模式

京東云 ? 來(lái)源:京東工業(yè) 孫磊 ? 作者:京東工業(yè) 孫磊 ? 2025-01-08 13:47 ? 次閱讀

作者:京東工業(yè) 孫磊

一、概念

策略模式(Strategy Pattern)也稱為(Policy Parttern)。 它定義了算法家族,分別封裝起來(lái),讓它們之間可以互相替換,此模式讓算法的變換,不會(huì)影響到使用算法的客戶。策略模式屬性行為模式。

二、實(shí)際應(yīng)用

業(yè)務(wù)場(chǎng)景:業(yè)務(wù)需要監(jiān)聽(tīng)多種消息,將接收到的消息更新到同一個(gè)ES中,不同的消息類型使用不同的策略處理,補(bǔ)充不同的數(shù)據(jù)信息,更新到ES中,供商家搜索和統(tǒng)計(jì)使用。

代碼實(shí)現(xiàn)結(jié)合spring框架、簡(jiǎn)單工廠和策略模式一起使用。

public interface GatherExecuteService {    
    /**     
    * 處理消息體     
    *     
    * @param gatherDataVo     
    */    
    boolean execute(GatherDataVo gatherDataVo);
}

多個(gè)實(shí)現(xiàn)類

// 價(jià)格策略實(shí)現(xiàn)
@Service
public class PriceExecuteServiceImpl implements GatherExecuteService {    
    @Override    
    public boolean execute(GatherDataVo gatherDataVo) {
         .....具體實(shí)現(xiàn)代碼省略   
    }
}
// 商品策略實(shí)現(xiàn)
@Service
public class ProductExecuteServiceImpl implements GatherExecuteService {  

    @Override    
    public boolean execute(GatherDataVo gatherDataVo) {  

        .....具體實(shí)現(xiàn)代碼省略  
    }
}
// 庫(kù)存策略實(shí)現(xiàn)
@Service
public class StockExecuteServiceImpl implements GatherExecuteService {    
    @Override    
    public boolean execute(GatherDataVo gatherDataVo) {   
     .....具體實(shí)現(xiàn)代碼省略  

     }
}

使用枚舉存儲(chǔ)策略實(shí)現(xiàn)bean

@Getter
@AllArgsConstructor
public enum MessageTypeEnum {    
    PRODUCT(0, "productExecuteServiceImpl", "商品基本信息消息"),    
    PRICE(1, "priceExecuteServiceImpl", "價(jià)格消息"),    
    STOCK(2, "stockExecuteServiceImpl", "庫(kù)存消息") ;    
    private int type;    
    private String service;   
    private String description;    
    public static String getServiceName(int type) {        
        MessageTypeEnum[] typeEnums = MessageTypeEnum.values();        
        for (MessageTypeEnum enumType : typeEnums) {            
            if (enumType.getType() == type) {                
                return enumType.getService();            
            }     
        }
        return null;    
    }
}

使用到不同策略的代碼

// 根據(jù)消息類型獲取不同策略類,然后使用spring的ApplicationContext獲取bean,達(dá)到執(zhí)行不同策略的目的。
String serviceName = MessageTypeEnum.getServiceName(gatherDataVo.getMessageType());
if (StringUtils.isNotBlank(serviceName)) {  
    GatherExecuteService gatherExecuteService = (GatherExecuteService) SpringContextUtil.getBean(serviceName,                      GatherExecuteService.class);  
}

策略模式是一種比較簡(jiǎn)單的設(shè)計(jì)模式,工作中經(jīng)常和其他設(shè)計(jì)模式一塊使用。簡(jiǎn)單的應(yīng)用記錄分享一下。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4802

    瀏覽量

    68742
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一文詳解前端常用設(shè)計(jì)模式

    設(shè)計(jì)模式一直是程序員談?wù)摰摹案叨恕痹掝}之一,總有一種敬而遠(yuǎn)之的心態(tài)。在了解后才知道在將函數(shù)作為一等對(duì)象的語(yǔ)言中,有許多需要利用對(duì)象多態(tài)性的設(shè)計(jì)模式,比如單例模式策略
    的頭像 發(fā)表于 11-30 10:19 ?1628次閱讀
    一文詳解前端常用設(shè)計(jì)<b class='flag-5'>模式</b>

    關(guān)于LVOOP設(shè)計(jì)模式的框架問(wèn)題?

    1. 請(qǐng)問(wèn)目前的很多設(shè)計(jì)模式,比如簡(jiǎn)單工廠模式策略模式之類的,labview是不是沒(méi)有框架,需要自己手工去實(shí)現(xiàn)?2. labview的actor framework是不是目前l(fā)abv
    發(fā)表于 08-07 23:14

    基于交錯(cuò)反激的微型逆變器不同工作模式控制策略的仿真研究

    基于交錯(cuò)反激的微型逆變器不同工作模式控制策略的仿真研究_胡林靜
    發(fā)表于 12-15 18:02 ?4次下載

    混合導(dǎo)通模式BoostPFC的控制策略研究

    混合導(dǎo)通模式BoostPFC的控制策略研究_王武
    發(fā)表于 01-04 16:32 ?8次下載

    封裝變化與面向接口編程

    在使用Java的集合框架中,經(jīng)常需要通過(guò)構(gòu)造方法傳入一個(gè)比較器Comparator或者創(chuàng)建比較器傳入Collections的靜態(tài)方法中作為方法參數(shù),進(jìn)行比較排序等,這其實(shí)就是策略模式的應(yīng)用。策略
    發(fā)表于 11-28 15:04 ?7364次閱讀
    封裝變化與面向接口編程

    不會(huì)有人不知道怎么優(yōu)雅的替換if-else語(yǔ)句吧

    三板斧手段: 優(yōu)先判斷條件,條件不滿足的,邏輯及時(shí)中斷返回; 融入策略模式策略模式+工廠+單例模式,錦上添花; 接
    的頭像 發(fā)表于 07-28 15:46 ?1445次閱讀
    不會(huì)有人不知道怎么優(yōu)雅的替換if-else語(yǔ)句吧

    設(shè)計(jì)模式最佳實(shí)踐探索—策略模式

    根據(jù)不同的應(yīng)用場(chǎng)景與意圖,設(shè)計(jì)模式主要分為創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式三類。本文主要探索行為型模式中的
    的頭像 發(fā)表于 10-31 14:24 ?960次閱讀

    為什么我不再推薦枚舉策略模式

    我們可以看到經(jīng)典方法,創(chuàng)建了一個(gè)接口、三個(gè)策略類,還是比較啰嗦的。調(diào)用類的實(shí)現(xiàn)也待商榷,新增一個(gè)策略類還要修改榜單實(shí)例(可以用抽象工廠解決,但是復(fù)雜度又上升了)。加之我們有更好的選擇,所以此處不再推薦經(jīng)典策略
    的頭像 發(fā)表于 04-14 10:52 ?2060次閱讀

    基于輸入阻抗控制的多模式混合PFC的控制策略

    簡(jiǎn)單地說(shuō),混合PFC的控制策略就是操縱開(kāi)關(guān)頻率在正弦電壓內(nèi)進(jìn)行變化來(lái)進(jìn)行跨越多個(gè)區(qū)域,難點(diǎn)是多模式區(qū)域的增益不會(huì)統(tǒng)一,實(shí)現(xiàn)多模式優(yōu)秀的電流控制效果就是難題
    的頭像 發(fā)表于 04-25 14:20 ?1370次閱讀
    基于輸入阻抗控制的多<b class='flag-5'>模式</b>混合PFC的控制<b class='flag-5'>策略</b>

    高頻使用的幾種設(shè)計(jì)模式

    策略模式定義了算法族,分別封裝起來(lái),讓它們之間可以相互替換,此模式讓算法的變化獨(dú)立于使用算法的的客戶。這個(gè)策略模式的定義是不是有點(diǎn)抽象呢?那
    的頭像 發(fā)表于 05-08 09:57 ?1042次閱讀
    高頻使用的幾種設(shè)計(jì)<b class='flag-5'>模式</b>

    設(shè)計(jì)模式行為型:策略模式

    策略模式(Strategy Pattern)中,一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改。這種類型的設(shè)計(jì)模式屬于行為型模式
    的頭像 發(fā)表于 06-07 11:18 ?674次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b>行為型:<b class='flag-5'>策略</b><b class='flag-5'>模式</b>

    迭代模式在UVM中的應(yīng)用有哪些

    行為型設(shè)計(jì)模式數(shù)量較多,上一篇介紹了模板模式策略模式,下面對(duì)迭代模式進(jìn)行介紹,挖掘其在UVM中的應(yīng)用。
    的頭像 發(fā)表于 08-14 17:15 ?628次閱讀
    迭代<b class='flag-5'>模式</b>在UVM中的應(yīng)用有哪些

    什么是策略模式

    什么是策略模式 官話: 策略模式(Strategy Pattern): 定義一系列算法類,將每一個(gè)算法封裝起來(lái),并讓它們可以相互替換,策略
    的頭像 發(fā)表于 10-08 14:15 ?2744次閱讀
    什么是<b class='flag-5'>策略</b><b class='flag-5'>模式</b>

    如何通過(guò)策略模式簡(jiǎn)化if-else

    相信大家日常開(kāi)發(fā)中會(huì)經(jīng)常寫各種分支判斷語(yǔ)句,比如 if-else ,當(dāng)分支較多時(shí),代碼看著會(huì)比較臃腫,那么如何優(yōu)化呢? 1、什么是策略模式? Define a family
    的頭像 發(fā)表于 10-08 16:08 ?784次閱讀
    如何通過(guò)<b class='flag-5'>策略</b><b class='flag-5'>模式</b>簡(jiǎn)化if-else

    Java 枚舉與策略模式、函數(shù)式接口的結(jié)合:實(shí)現(xiàn)高內(nèi)聚低耦合的設(shè)計(jì)

    中,通常會(huì)使用枚舉來(lái)定義業(yè)務(wù)上的一組常量,那除了簡(jiǎn)單地定義常量之外,我們?nèi)绾卫妹杜e來(lái)實(shí)現(xiàn)高內(nèi)聚、低耦合的設(shè)計(jì)呢?下面介紹下枚舉和策略模式、函數(shù)式接口的組合應(yīng)用。 二、枚舉+策略模式
    的頭像 發(fā)表于 11-21 14:06 ?243次閱讀
    主站蜘蛛池模板: 青青草伊人网| 国产亚洲欧美在线中文BT天堂网| 搞av.com| 久久亚洲这里只有精品18| 少妇两个奶头喷出奶水了怎么办 | 99re久久热在线播放8| 国产精品亚洲欧美| 欧洲老妇人bb| 在线观看成人免费视频| 国产伦精品一区二区三区| 欧美激情视频在线观看一区二区三区| 亚洲精品拍拍央视网出文| 成人免费视频网站www| 久青草国产在线观看视频| 性色少妇AV蜜臀人妻无码 | 国产精品97久久AV色婷婷综合| 狼好色有你好看| 亚洲精品乱码久久久久久中文字幕 | 97视频在线免费播放| 九九热这里都是精品| 手机在线免费看毛片| bbwvideoa欧美老妇| 久久受www免费人成_看片中文| 无遮挡午夜男女XX00动态| 扒开老师大腿猛进AAA片邪恶 | 很黄很色60分钟在线观看| 色综合久久五月| wwwxxc| 美国ZOOM动物在线观看| 伊人精品影院| 国语对白嫖老妇胖老太| 无修肉动漫在线观看影片| 处破女免费播放| 欧美性xxxxxx爱| 99re久久热在这里精品| 久久精品国产免费播高清无卡| 亚洲AV福利天堂一区二区三| 国产 日韩 欧美 高清 亚洲| 热思思| tube69hdxxxx日本| 牛牛免费视频|