java策略模式的簡單實現
阿新 • • 發佈:2022-04-11
這裡記錄下策略模式的實現
1 新建一個controller
@RestController @Api("java策略模式Demo") @RequestMapping(value = "/finalTest", produces = MediaType.APPLICATION_JSON_VALUE) public class StrategyTestController { @Autowired TestHandlerService testHandler; @CostTime @ApiOperation(value = "") @GetMapping(value = "/strategy") public CommonResult<List<String>> beforeAuditTmFirstPayAmount(@RequestParam Integer type) { return CommonResult.success(testHandler.getDaoByType(type).test(type)); } }
2 建立一個實現類ITestService
@Service
public interface ITestService {
public Integer getType();
public String test(Integer type);
}
3 建立倆個類實現 ITestService(我稱之為策略類)實現ITestService
@Service public class TestOneService implements ITestService { @Override public Integer getType() { return TestEnum.ONE.getCode(); } @Override public String test(Integer type) { return "這是第一個策略"; } }
@Service
public class TestTwoService implements ITestService {
@Override
public Integer getType() {
return TestEnum.TWO.getCode();
}
@Override
public String test(Integer type) {
return "這是第二個策略";
}
}
4 建立一個TestHandlerService(用處初始化策略map,個人說法)
@Service public class TestHandlerService { private final Map<Integer, ITestService> map = new HashMap<>(); // 此構造方法是初始化map的值 public TestHandlerService(List<ITestService> daoList) { for (ITestService dao : daoList) { map.put(dao.getType(), dao); } } public ITestService getDaoByType(Integer type) { return map.get(type); } }
5 此時根據我們介面傳來的type,會自動選擇執行策略,下面是結果,自此結束!