上一节说到责任链模式: https://blog.csdn.net/zhanglei082319/article/details/89109599
责任链模式的抽象定义:将请求传给一个接收者链,由链将请求流转给目标对象。就是说责任链可以像一个链条一样一环套一环的将各个业务串联在一起,有顺序的执行下去。并且可以在执行中做一些自定义操作。
今天需要将的命令模式,在实际中一般会和责任链模式联合使用。
命令模式: 将指定的功能接口实现,抽象成一个命令接口,放在单独的类中实现。
下面模拟一个查询用户接口的命令模式设计:
1、首先新建一个抽象命令接口
/**
* 命令接口
*/
public interface Command<T> {
/**
* 命令执行
*/
T execute();
}
2、针对这个抽象命令接口,实现一个查询用户的命令。
/**
* 查询用户命令
*/
public class QueryUserCommand implements Command<List<User>> {
private User user;
private UserMapper userMapper;
public QueryUserCommand(User user,UserMapper userMapper){
this.user = user;
this.userMapper = userMapper;
}
@Override
public List<User> execute() {
return userMapper.queryUser(this.user);
}
}
3、然后我们在service层方法直接调用这个命令实现。
@Service
public class UserService {
@Resource
private UserMapper userMapper;
public List<User> queryUser(User user){
return new QueryUserCommand(user,userMapper).execute();
}
}
这样一个简单的查询用户命令案例编写完毕,在实际开发中也可以通过这样的方式将实现抽象封装到单个的类中,可以提高代码的可读性和可维护性。