diff --git a/README.md b/README.md index fb4127ae0ae3d58f1f625b58c6e3899c9049f04d..9eee6bc5bb8182c4c4b63a3c37036b0dabcb7ba3 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,8 @@ ## 6.3.2 策略模式结构图 ![img.png](img/img_strategy_pattern_struct.png) - +## 6.3.3 +![img.png](img/img_strategy_pattern_merits.png) # 特技 diff --git a/byv-strategy-patttern-14/pom.xml b/byv-strategy-patttern-14/pom.xml index 6a059aec94d1841b1c6e2a5e6c4302909dbce11d..8852549b82a7a736a329becfcfaeca32d1b9a7ad 100644 --- a/byv-strategy-patttern-14/pom.xml +++ b/byv-strategy-patttern-14/pom.xml @@ -21,7 +21,16 @@ 1.18.28 compile - + + org.dom4j + dom4j + 2.1.3 + + + jaxen + jaxen + 1.1.6 + \ No newline at end of file diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/ReceiptBuilder.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/ReceiptBuilder.java index 17003ab49177abe5005ce6c44798874520355709..0dff7ac773328e69c27c5a51552a43c6e8f39369 100644 --- a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/ReceiptBuilder.java +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/ReceiptBuilder.java @@ -15,8 +15,8 @@ public class ReceiptBuilder { //模拟回执的信息 List list=new ArrayList<>(); list.add(new Receipt("MT1101回执信息","MT1101")); - list.add(new Receipt("MT1102回执信息","MT1102")); - list.add(new Receipt("MT1103回执信息","MT1103")); + // list.add(new Receipt("MT1102回执信息","MT1102")); + // list.add(new Receipt("MT1103回执信息","MT1103")); //list.add(new Receipt("MT1104回执信息","MT1104")); // diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandleStrategyFactory.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandleStrategyFactory.java index d916a52c613d8f46516f6fd68f3e0f999f2995cf..590f0e8944258918ace04f44a9e0b2ea11fa17d4 100644 --- a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandleStrategyFactory.java +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandleStrategyFactory.java @@ -8,7 +8,12 @@ package com.boyunv.strategy.example03; */ import com.boyunv.strategy.example02.Receipt; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Node; +import org.dom4j.io.SAXReader; +import javax.xml.parsers.SAXParser; import java.util.HashMap; import java.util.Map; @@ -21,9 +26,23 @@ public class ReceiptHandleStrategyFactory { //初始化具体的策略,保存到map集合 public static void init(){ strategyMap= new HashMap<>(); - strategyMap.put("MT1101",new MT1101HandlerStrategy()); - strategyMap.put("MT1102",new MT1102HandlerStrategy()); - strategyMap.put("MT1103",new MT1103HandlerStrategy()); +// strategyMap.put("MT1101",new MT1101HandlerStrategy()); +// strategyMap.put("MT1102",new MT1102HandlerStrategy()); +// strategyMap.put("MT1103",new MT1103HandlerStrategy()); + try { + SAXReader reader=new SAXReader(); + String file="D:\\projs\\design-patterns\\byv-strategy-patttern-14\\src\\main\\resources\\config.xml"; + Document read = reader.read(file); + Node node = read.selectSingleNode("/config/className"); + String className = node.getText(); + Class clazz= Class.forName(className); + ReceiptHandlerStrategy receiptHandlerStrategy = (ReceiptHandlerStrategy) clazz.newInstance(); + strategyMap.put("MT1101",receiptHandlerStrategy); + + + } catch (Exception e) { + throw new RuntimeException(e); + } } //根据回执类型,获取对应的策略对象 diff --git a/byv-strategy-patttern-14/src/main/resources/config.xml b/byv-strategy-patttern-14/src/main/resources/config.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cbe016568f295adf6621d9d76f83604173b20e5 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/resources/config.xml @@ -0,0 +1,4 @@ + + + com.boyunv.strategy.example03.MT1101HandlerStrategy + \ No newline at end of file diff --git a/img/img_strategy_pattern_merits.png b/img/img_strategy_pattern_merits.png new file mode 100644 index 0000000000000000000000000000000000000000..79f12fbaa9d1809746e6e4f5b3812b44160142ed Binary files /dev/null and b/img/img_strategy_pattern_merits.png differ