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

java設(shè)計(jì)模式之策略模式在促銷活動(dòng)場景中的使用案例

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

概念

  • 策略模式是一種行為設(shè)計(jì)模式

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

使用方式

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

業(yè)務(wù)場景

促銷活動(dòng)

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

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

定義一個(gè)公共接口或者抽象類

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

每個(gè)方式(策略)去實(shí)現(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é)活動(dòng)");
? ?  }
?}
@Service
?public class MidAutumnStrategy implements FestivalStrategy {
?
? ? ?@Override
? ? ?public FestivalEnum getFestivalEnum() {
? ? ? ? ?return FestivalEnum.MID_AUTUMN;
? ?  }
?
? ? ?@Override
? ? ?public void show() {
? ? ? ? ?System.out.println("中秋活動(dòng)");
? ?  }
?}
@Service
?public class ChristmasStrategy implements FestivalStrategy {
?
? ? ?@Override
? ? ?public FestivalEnum getFestivalEnum() {
? ? ? ? ?return FestivalEnum.CHRISTMAS;
? ?  }
?
? ? ?@Override
? ? ?public void show() {
? ? ? ? ?System.out.println("圣誕活動(dòng)");
? ?  }
?}

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

@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();
? ? ? ?  }
? ?  }
?}

調(diào)用

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

結(jié)果

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

以上就是java設(shè)計(jì)模式之策略模式在促銷活動(dòng)場景中案例詳解的詳細(xì)內(nèi)容,更多關(guān)于java 設(shè)策略模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論