创建策略接口
package com.example.study04strategy.strategy;
public interface OrderStrategy {
boolean shouldExecute(int type);
Boolean handler(Object params);
}
创建TaskOrderStrategy 实现 OrderStrategy
package com.example.study04strategy.strategy;
public class TaskOrderStrategy implements OrderStrategy {
@Override
public boolean shouldExecute(int type) {
return 1 == type;
}
@Override
public Boolean handler(Object params) {
System.out.println("订单未接单");
return true;
}
}
创建SendOrderStrategy 实现 OrderStrategy
package com.example.study04strategy.strategy;
public class SendOrderStrategy implements OrderStrategy {
@Override
public boolean shouldExecute(int type) {
return 2 == type;
}
@Override
public Boolean handler(Object params) {
System.out.println("订单未发货");
return true;
}
}
创建策略上下文
package com.example.study04strategy.factory;
import com.example.study04strategy.strategy.OrderStrategy;
import com.example.study04strategy.strategy.SendOrderStrategy;
import com.example.study04strategy.strategy.TaskOrderStrategy;
import java.util.ArrayList;
import java.util.List;
public class OrderStrategyContext {
private List<OrderStrategy> orderStrategyList = new ArrayList<>();
public OrderStrategyContext() {
orderStrategyList.add(new SendOrderStrategy());
orderStrategyList.add(new TaskOrderStrategy());
}
public Boolean handler(Integer type, Object params) {
for (OrderStrategy strategy : orderStrategyList) {
if (strategy.shouldExecute(type)) {
return strategy.handler(params);
}
}
return false;
}
}
测试方法
package com.example.study04strategy;
import com.example.study04strategy.factory.OrderStrategyContext;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Study04StrategyTests {
@Test
void test1() {
OrderStrategyContext strategyContext = new OrderStrategyContext();
Boolean operation = strategyContext.handler(1, "参数");
System.out.println("结果: " + operation);
}
}