diff --git a/byv-strategy-patttern-14/pom.xml b/byv-strategy-patttern-14/pom.xml index 71e78d626bd121ef3760c54825304376dfb9ef88..6a059aec94d1841b1c6e2a5e6c4302909dbce11d 100644 --- a/byv-strategy-patttern-14/pom.xml +++ b/byv-strategy-patttern-14/pom.xml @@ -14,12 +14,14 @@ UTF-8 + org.projectlombok lombok 1.18.28 compile + \ No newline at end of file diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Client.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..532ba76e861dd0a49901f9199a40b1fabb178d7b --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Client.java @@ -0,0 +1,36 @@ +package com.boyunv.strategy.example02; +/* + *@description + * + *@author boyunv + *@create 2023/8/14 21:51 + *@version 1.0 + */ + +import java.util.List; + +public class Client { + public static void main(String[] args) { + List receiptList = ReceiptBuilder.getReceiptList(); + for (Receipt receipt : receiptList) { + if ("MT1101".equals(receipt.getType())){ + System.out.println("接收到MT1101的回执信息"); + System.out.println("解析回执内容"); + System.out.println("执行业务逻辑A......"); + }else if ("MT1102".equals(receipt.getType())){ + System.out.println("接收到MT1102的回执信息"); + System.out.println("解析回执内容"); + System.out.println("执行业务逻辑B....."); + }else if ("MT1103".equals(receipt.getType())){ + System.out.println("接收到MT1103的回执信息"); + System.out.println("解析回执内容"); + System.out.println("执行业务逻辑B....."); + }else if ("MT1104".equals(receipt.getType())){ + System.out.println("接收到MT1104的回执信息"); + System.out.println("解析回执内容"); + System.out.println("执行业务逻辑B....."); + } + } + } + +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Receipt.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Receipt.java new file mode 100644 index 0000000000000000000000000000000000000000..5e655e2d3f853572821c4664f3238ed1b6e1c38d --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Receipt.java @@ -0,0 +1,28 @@ +package com.boyunv.strategy.example02; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.ToString; + +/* + *@description + * 回执信息 + *@author boyunv + *@create 2023/8/14 21:27 + *@version 1.0 + */ +@Data +@AllArgsConstructor +@ToString +public class Receipt { + /** + * 回执内容 + */ + private String message; + /** + * 回执类型 + */ + private String type; + + +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..17003ab49177abe5005ce6c44798874520355709 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/ReceiptBuilder.java @@ -0,0 +1,26 @@ +package com.boyunv.strategy.example02; +/* + *@description + * 回执信息生成类 + *@author boyunv + *@create 2023/8/14 21:47 + *@version 1.0 + */ + +import java.util.ArrayList; +import java.util.List; + +public class ReceiptBuilder { + public static List getReceiptList(){ + //模拟回执的信息 + 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("MT1104回执信息","MT1104")); + + // + return list; + + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/Client.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..2ea2a448634d61c4e3f8f03fff50b353079f542c --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/Client.java @@ -0,0 +1,33 @@ +package com.boyunv.strategy.example03; +/* + *@description + * + *@author boyunv + *@create 2023/8/15 7:44 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; +import com.boyunv.strategy.example02.ReceiptBuilder; + +import java.util.List; + +public class Client { + public static void main(String[] args) { + //模拟回执 + List receiptList= ReceiptBuilder.getReceiptList(); + + //策略上下文 + ReceiptStrategyContext context = new ReceiptStrategyContext(); + for (Receipt receipt : receiptList) { + //获取策略 + ReceiptHandleStrategyFactory.init(); + ReceiptHandlerStrategy strategy = ReceiptHandleStrategyFactory.getStrategy(receipt.getType()); + //设置策略 + context.setReceiptHandlerStrategy(strategy); + //执行策略 + context.handleReceipt(receipt); + + } + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1101HandlerStrategy.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1101HandlerStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..eddcdb32b7ab78c7b2c0eb228f3dfdbb1aa3082b --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1101HandlerStrategy.java @@ -0,0 +1,18 @@ +package com.boyunv.strategy.example03; +/* + *@description + * 具体策略类 + *@author boyunv + *@create 2023/8/15 7:32 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; + +public class MT1101HandlerStrategy implements ReceiptHandlerStrategy{ + @Override + public void handleReceipt(Receipt receipt) { + System.out.println("接收到MT1101的回执信息"+receipt.getMessage()); + + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1102HandlerStrategy.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1102HandlerStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..def09665d69456d03769d213881897fb41d8515d --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1102HandlerStrategy.java @@ -0,0 +1,18 @@ +package com.boyunv.strategy.example03; +/* + *@description + * 具体策略类 + *@author boyunv + *@create 2023/8/15 7:32 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; + +public class MT1102HandlerStrategy implements ReceiptHandlerStrategy{ + @Override + public void handleReceipt(Receipt receipt) { + System.out.println("接收到MT1102的回执信息"+receipt.getMessage()); + + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1103HandlerStrategy.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1103HandlerStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..71990e31b2b2bc75a36b26c7d14bbf896a043dd2 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1103HandlerStrategy.java @@ -0,0 +1,18 @@ +package com.boyunv.strategy.example03; +/* + *@description + * 具体策略类 + *@author boyunv + *@create 2023/8/15 7:32 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; + +public class MT1103HandlerStrategy implements ReceiptHandlerStrategy{ + @Override + public void handleReceipt(Receipt receipt) { + System.out.println("接收到MT1103的回执信息"+receipt.getMessage()); + + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1104HandlerStrategy.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1104HandlerStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..9f89266115b88a4fc98f42a7c3fcd92b8403a9b3 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1104HandlerStrategy.java @@ -0,0 +1,18 @@ +package com.boyunv.strategy.example03; +/* + *@description + * 具体策略类 + *@author boyunv + *@create 2023/8/15 7:32 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; + +public class MT1104HandlerStrategy implements ReceiptHandlerStrategy{ + @Override + public void handleReceipt(Receipt receipt) { + System.out.println("接收到MT1104的回执信息"+receipt.getMessage()); + + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..d916a52c613d8f46516f6fd68f3e0f999f2995cf --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandleStrategyFactory.java @@ -0,0 +1,34 @@ +package com.boyunv.strategy.example03; +/* + *@description + * 策略工厂类 + *@author boyunv + *@create 2023/8/15 7:38 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; + +import java.util.HashMap; +import java.util.Map; + +public class ReceiptHandleStrategyFactory { + public ReceiptHandleStrategyFactory(){ + + } + //使用MAP集合存储策略信息,彻底消除if ...else + private static Map strategyMap; + //初始化具体的策略,保存到map集合 + public static void init(){ + strategyMap= new HashMap<>(); + strategyMap.put("MT1101",new MT1101HandlerStrategy()); + strategyMap.put("MT1102",new MT1102HandlerStrategy()); + strategyMap.put("MT1103",new MT1103HandlerStrategy()); + } + + //根据回执类型,获取对应的策略对象 + public static ReceiptHandlerStrategy getStrategy(String receiptType){ + return strategyMap.get(receiptType); + } +} + diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandlerStrategy.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandlerStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..5c34fe8c6bfa5575681c48abb6aed987d9550c98 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandlerStrategy.java @@ -0,0 +1,14 @@ +package com.boyunv.strategy.example03; +/* + *@description + * 回执信息处理接口 + *@author boyunv + *@create 2023/8/14 22:08 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; + +public interface ReceiptHandlerStrategy { + void handleReceipt(Receipt receipt); +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptStrategyContext.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptStrategyContext.java new file mode 100644 index 0000000000000000000000000000000000000000..bf77c3eea8af1dcbb88a1255eda3a2bd917697bb --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptStrategyContext.java @@ -0,0 +1,24 @@ +package com.boyunv.strategy.example03; +/* + *@description + * 上下文类,持有策略接口,决定执行哪一个具体的策略类 + *@author boyunv + *@create 2023/8/15 7:34 + *@version 1.0 + */ + +import com.boyunv.strategy.example02.Receipt; + +public class ReceiptStrategyContext { + private ReceiptHandlerStrategy receiptHandlerStrategy; + + public void setReceiptHandlerStrategy(ReceiptHandlerStrategy receiptHandlerStrategy) { + this.receiptHandlerStrategy = receiptHandlerStrategy; + } + //调用策略类中的方法 + public void handleReceipt(Receipt receipt){ + if(receipt!=null){ + receiptHandlerStrategy.handleReceipt(receipt); + } + } +}