扣款策略接口 Deduction
exec 執(zhí)行本策略扣款策略1 implements 扣款策略接口
實(shí)現(xiàn)exec策略邏輯扣款策略2 implements 扣款策略接口
扣款策略執(zhí)行器
構(gòu)造函數(shù)傳入Deduction接口
exec:調(diào)用 deduction.exec策略枚舉:外部傳枚舉值,找到對(duì)應(yīng)的策略實(shí)現(xiàn)子類
工廠類 StrategyFactory
getDeduction:接受枚舉參數(shù),通過枚舉里的子類名屬性,反射實(shí)例化子類
deduction = StrategyFactory.getDeduction(enum); // 通過枚舉類獲取對(duì)應(yīng)的策略子類
context = new Context(deduction);
context.exec(); // 執(zhí)行策略
總結(jié)
策略模式封裝了容易變化的邏輯部分,自由切換應(yīng)對(duì)不同場(chǎng)景,而且擴(kuò)展性好。
工廠模式
- 避免策略實(shí)現(xiàn)子類對(duì)外直接暴露,因?yàn)橥獠空{(diào)用策略是直接依賴實(shí)現(xiàn)子類傳遞給context的
- 外部通過傳遞一個(gè)類似枚舉,作為映射到策略子類的key,剩下的實(shí)例化交給工廠類來做