From 2ed41aa747a5b64f3956dbc4bf57c57d302e773e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E8=9C=97=E7=89=9B?= <1003271829@qq.com> Date: Sat, 2 Dec 2023 11:24:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A8=A1=E5=BC=8F=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BB=A3=E7=A0=81=E4=B8=AD=E7=9A=84if=20else?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/woniu/mp/zhuangtai/Order.java | 18 ++++++++++ .../woniu/mp/zhuangtai/OrderStateEnum.java | 35 +++++++++++++++++++ .../java/com/woniu/mp/zhuangtai/TestMain.java | 20 +++++++++++ 3 files changed, 73 insertions(+) create mode 100644 状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/Order.java create mode 100644 状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/OrderStateEnum.java create mode 100644 状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/TestMain.java diff --git a/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/Order.java b/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/Order.java new file mode 100644 index 0000000..499e2a8 --- /dev/null +++ b/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/Order.java @@ -0,0 +1,18 @@ +package com.woniu.mp.zhuangtai; + +import lombok.Data; + + +@Data +public class Order { + + private OrderStateEnum state; + + public Order() { + state = OrderStateEnum.UNPAY; + } + + public void nextState(){ + state.nextState(this); + } +} \ No newline at end of file diff --git a/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/OrderStateEnum.java b/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/OrderStateEnum.java new file mode 100644 index 0000000..cc151d4 --- /dev/null +++ b/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/OrderStateEnum.java @@ -0,0 +1,35 @@ +package com.woniu.mp.zhuangtai; + +/** + * @className: OrderStateEnum + * @author: woniu + * @date: 2023/12/2 + **/ +public enum OrderStateEnum { + + //未支付 + UNPAY { + @Override + public void nextState(Order order) { + order.setState(PAID); + } + }, //已支付 + PAID { + @Override + public void nextState(Order order) { + order.setState(FINISHED); + } + }, + + FINISHED { + @Override + public void nextState(Order order) { + order.setState(PAID); + } + }; + + + public abstract void nextState(Order order); + + +} diff --git a/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/TestMain.java b/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/TestMain.java new file mode 100644 index 0000000..d2c2036 --- /dev/null +++ b/状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/TestMain.java @@ -0,0 +1,20 @@ +package com.woniu.mp.zhuangtai; + + +/** + * 使用状态模式优化代码 解决代码中的if else + */ +public class TestMain { + // Order 未支付-> 已支付-> 已完成 + public static void main(String[] args) { + Order order = new Order(); +// if (order.getState() == "") { +// order.setState(OrderStateEnum.PAID); +// } + System.out.println(order.getState()); + order.nextState(); + System.out.println(order.getState()); + order.nextState(); + System.out.println(order.getState()); + } +}