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()); + } +}