Browse Source

状态模式优化代码中的if else

pull/2/head
程序员蜗牛 1 year ago
parent
commit
2ed41aa747
  1. 18
      状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/Order.java
  2. 35
      状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/OrderStateEnum.java
  3. 20
      状态模式优化代码中的if else/mp-demo/src/main/java/com/woniu/mp/zhuangtai/TestMain.java

18
状态模式优化代码中的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);
}
}

35
状态模式优化代码中的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);
}

20
状态模式优化代码中的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());
}
}
Loading…
Cancel
Save