欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java設計模式之策略模式在促銷活動場景中的使用案例

 更新時間:2023年05月18日 11:08:17   作者:多喝灬丶燙水  
這篇文章主要為大家介紹了java設計模式之策略模式在促銷活動場景中案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

概念

  • 策略模式是一種行為設計模式

  • 就是將一個東西(入?yún)ⅲ?/li>
  • 傳到分發(fā)中心(上下文或環(huán)境類)
  • 分發(fā)中心根據(jù)條件的不同選擇不同的處理方式(策略)
  • 每一個方式(具體的實現(xiàn)類)對應相應的處理方法(類中的方法)(可以抽出公共的接口或抽象類)
  • 東西通過相應的處理方法
  • 輸出最終的產(chǎn)品(出參)。

使用方式

  • 定義一個公共接口或者抽象類
  • 每個方式(策略)去實現(xiàn)該接口或者抽象類
  • 定義一個環(huán)境類去調用不同的策略

業(yè)務場景

促銷活動

一家百貨公司在定年度的促銷活動。針對不同的節(jié)日(春節(jié)、中秋節(jié)、圣誕節(jié))推出不同的促銷活動,由促銷員將促銷活動展示給客戶。

代碼實現(xiàn)

定義一個公共接口或者抽象類

public interface FestivalStrategy {
     FestivalEnum getFestivalEnum();
     void show();
 }

每個方式(策略)去實現(xiàn)該接口或者抽象類

@Service
?public class NewYearStrategy implements FestivalStrategy{
? ? ?@Override
? ? ?public FestivalEnum getFestivalEnum() {
? ? ? ? ?return FestivalEnum.CHINESE_NEW_YEAR;
? ?  }
? ? ?@Override
? ? ?public void show() {
? ? ? ? ?System.out.println("春節(jié)活動");
? ?  }
?}
@Service
?public class MidAutumnStrategy implements FestivalStrategy {
?
? ? ?@Override
? ? ?public FestivalEnum getFestivalEnum() {
? ? ? ? ?return FestivalEnum.MID_AUTUMN;
? ?  }
?
? ? ?@Override
? ? ?public void show() {
? ? ? ? ?System.out.println("中秋活動");
? ?  }
?}
@Service
?public class ChristmasStrategy implements FestivalStrategy {
?
? ? ?@Override
? ? ?public FestivalEnum getFestivalEnum() {
? ? ? ? ?return FestivalEnum.CHRISTMAS;
? ?  }
?
? ? ?@Override
? ? ?public void show() {
? ? ? ? ?System.out.println("圣誕活動");
? ?  }
?}

定義一個環(huán)境類去調用不同的策略

@Component
?public class FestivalStrategyUseService implements ApplicationContextAware {
? ? ?private Map<FestivalEnum,FestivalStrategy> ?festivalStrategyMap =new HashMap<>();
? ? ?@Override
? ? ?public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
? ? ? ? ?Map<String, FestivalStrategy> tmepMap = applicationContext.getBeansOfType(FestivalStrategy.class);
? ? ? ? ?tmepMap.values().forEach(strategyService -> festivalStrategyMap.put(strategyService.getFestivalEnum(), strategyService));
? ?  }
? ? ?public void showFestivalAndContext(FestivalEnum festivalEnum) {
? ? ? ? ?FestivalStrategy festivalStrategy = festivalStrategyMap.get(festivalEnum);
? ? ? ? ?if (festivalStrategy != null) {
? ? ? ? ? ? ?System.out.println("現(xiàn)在正值"+festivalStrategy.getFestivalEnum().getName()+"佳節(jié)");
? ? ? ? ? ? ?festivalStrategy.show();
? ? ? ?  }
? ?  }
?}

或者

@Component
?public class FestivalStrategyUseService {
?     @Autowired
? ? ?private Map<String,FestivalStrategy> ?festivalStrategyMap;
? ? ?public void showFestivalAndContext(String festivalEnum) {
? ? ? ? ?FestivalStrategy festivalStrategy = festivalStrategyMap.get(festivalEnum);
? ? ? ? ?if (festivalStrategy != null) {
? ? ? ? ? ? ?System.out.println("現(xiàn)在正值"+festivalStrategy.getFestivalEnum().getName()+"佳節(jié)");
? ? ? ? ? ? ?festivalStrategy.show();
? ? ? ?  }
? ?  }
?}

調用

@Autowired
?FestivalStrategyUseService festivalStrategyUseService;
?
?@Test
?public void test3(){
?    //第一種
? ? ?festivalStrategyUseService.showFestivalAndContext(FestivalEnum.CHINESE_NEW_YEAR);
? ? ?//第二種
? ? ?festivalStrategyUseService.showFestivalAndContext("NewYearStrategy");
?}

結果

現(xiàn)在正值春節(jié)佳節(jié)
春節(jié)活動:買一送一

以上就是java設計模式之策略模式在促銷活動場景中案例詳解的詳細內容,更多關于java 設策略模式的資料請關注腳本之家其它相關文章!

相關文章

最新評論