java SSM controller getMapping 使用策略模式代替if-else根据手机号调用其他实现类查询不同信息添加到model中返回不同页面,写一个例子
时间: 2023-05-21 19:04:18 浏览: 152
当然,我可以为您提供一个代替if-else语句的策略模式示例。首先,需要定义一个策略接口:
```java
public interface IQueryStrategy {
void query(String phone, Model model);
}
```
然后,实现这个接口的几个查询策略类,例如:
```java
public class UserInfoQuery implements IQueryStrategy {
@Override
public void query(String phone, Model model) {
// 根据手机号查询用户信息
UserInfo userInfo = userInfoService.queryByPhone(phone);
// 将查询结果添加到model中
model.addAttribute("userInfo", userInfo);
}
}
public class OrderInfoQuery implements IQueryStrategy {
@Override
public void query(String phone, Model model) {
// 根据手机号查询订单信息
List<OrderInfo> orderInfoList = orderInfoService.queryByPhone(phone);
// 将查询结果添加到model中
model.addAttribute("orderInfoList", orderInfoList);
}
}
```
再编写一个策略工厂类,用于根据不同参数获取不同的策略:
```java
public class QueryStrategyFactory {
public static final String STRATEGY_USER_INFO = "UserInfo";
public static final String STRATEGY_ORDER_INFO = "OrderInfo";
public static IQueryStrategy getQueryStrategy(String strategy) {
if (STRATEGY_USER_INFO.equals(strategy)) {
return new UserInfoQuery();
} else if (STRATEGY_ORDER_INFO.equals(strategy)) {
return new OrderInfoQuery();
}
// 如果没有命中任何一个策略,则返回默认策略
return new DefaultQueryStrategy();
}
private static class DefaultQueryStrategy implements IQueryStrategy {
@Override
public void query(String phone, Model model) {
// do nothing
}
}
}
```
最后,在Controller中使用策略模式来处理不同的查询请求:
```java
@Controller
@RequestMapping("/query")
public class QueryController {
@GetMapping
public String query(@RequestParam("strategy") String strategy,
@RequestParam("phone") String phone,
Model model) {
// 获取对应策略
IQueryStrategy queryStrategy = QueryStrategyFactory.getQueryStrategy(strategy);
// 执行查询
queryStrategy.query(phone, model);
// 返回对应页面
return strategy;
}
}
```
以上就是一个简单的使用策略模式替代if-else的例子。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)