1. 程式人生 > 其它 >java策略模式的簡單實現

java策略模式的簡單實現

這裡記錄下策略模式的實現

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,會自動選擇執行策略,下面是結果,自此結束!