From 92e295eac5108978f9605ae0a76550d06135be24 Mon Sep 17 00:00:00 2001
From: "1923365156@qq.com" <$$@@zhaofan666>
Date: Tue, 15 Aug 2023 07:53:36 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AD=96=E7=95=A5=E6=A8=A1=E5=BC=8F=E7=9A=84?=
=?UTF-8?q?=E5=BA=94=E7=94=A8=E7=A4=BA=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
byv-strategy-patttern-14/pom.xml | 2 ++
.../com/boyunv/strategy/example02/Client.java | 36 +++++++++++++++++++
.../boyunv/strategy/example02/Receipt.java | 28 +++++++++++++++
.../strategy/example02/ReceiptBuilder.java | 26 ++++++++++++++
.../com/boyunv/strategy/example03/Client.java | 33 +++++++++++++++++
.../example03/MT1101HandlerStrategy.java | 18 ++++++++++
.../example03/MT1102HandlerStrategy.java | 18 ++++++++++
.../example03/MT1103HandlerStrategy.java | 18 ++++++++++
.../example03/MT1104HandlerStrategy.java | 18 ++++++++++
.../ReceiptHandleStrategyFactory.java | 34 ++++++++++++++++++
.../example03/ReceiptHandlerStrategy.java | 14 ++++++++
.../example03/ReceiptStrategyContext.java | 24 +++++++++++++
12 files changed, 269 insertions(+)
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Client.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/Receipt.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example02/ReceiptBuilder.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/Client.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1101HandlerStrategy.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1102HandlerStrategy.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1103HandlerStrategy.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/MT1104HandlerStrategy.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandleStrategyFactory.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptHandlerStrategy.java
create mode 100644 byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example03/ReceiptStrategyContext.java
diff --git a/byv-strategy-patttern-14/pom.xml b/byv-strategy-patttern-14/pom.xml
index 71e78d6..6a059ae 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 0000000..532ba76
--- /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 0000000..5e655e2
--- /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 0000000..17003ab
--- /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 0000000..2ea2a44
--- /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 0000000..eddcdb3
--- /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 0000000..def0966
--- /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 0000000..71990e3
--- /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 0000000..9f89266
--- /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 0000000..d916a52
--- /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 0000000..5c34fe8
--- /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 0000000..bf77c3e
--- /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);
+ }
+ }
+}
--
Gitee