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