概述
? ? ? ? 策略模式是23種設計模式之一,也是工作中出現頻率比較高的設計模式之一,策略模式主要是為了針對不通業務場景做出不同行為的一種設計模式。該模式一般可以直接替換多個if eles 的場景。策略模式主要分為三個部分,策略接口,具體實現策略的類,還有一個策略上下文對象。
示例
package com.example.demo.service.strategy;/*** @author 雙子的小壞* @date 2024/6/28 11:44:54* @description : 吃什么策略接口*/
public interface EatWhatStrategy {/*** 吃東西方法* @return*/String eatSomeing();
}
package com.example.demo.service.strategy;/*** @author 雙子的小壞* @date 2024/6/28 11:47:05* @description :有錢的策略*/
public class HaveMoneyStrategy implements EatWhatStrategy{@Overridepublic String eatSomeing() {return "有錢當然是下館子了!!!";}
}
package com.example.demo.service.strategy;/*** @author 雙子的小壞* @date 2024/6/28 11:50:16* @description :沒錢的策略*/
public class NoMoneyStrategy implements EatWhatStrategy{@Overridepublic String eatSomeing() {return "沒錢就吃土唄";}
}
package com.example.demo.service.strategy;/*** @author 雙子的小壞* @date 2024/6/28 11:51:36* @description : 吃什么策略的上下文對象*/
public class EatWhatStrategyContent {/*** 吃什么策略的引用*/private EatWhatStrategy eatWhatStrategy;/*** 設置策略的方法* @param eatWhatStrategy 具體策略*/public void setEatWhatStrategy(EatWhatStrategy eatWhatStrategy){this.eatWhatStrategy = eatWhatStrategy;}/*** 調用吃什么的方法*/public String eat(){return eatWhatStrategy.eatSomeing();}
}
package com.example.demo.service.strategy;/*** @author 雙子的小壞* @date 2024/6/28 11:56:32* @description : 策略模式*/
public class StrategyDemo {public static void main(String[] args) {//創建上下文對象EatWhatStrategyContent eatWhatStrategyContent = new EatWhatStrategyContent();//設置有錢的策略eatWhatStrategyContent.setEatWhatStrategy( new HaveMoneyStrategy());//調用策略方法進行返回String eatStr = eatWhatStrategyContent.eat();System.out.println(eatStr);//設置沒錢的策略eatWhatStrategyContent.setEatWhatStrategy(new NoMoneyStrategy());//調用策略方法進行返回eatStr = eatWhatStrategyContent.eat();System.out.println(eatStr);}
}