我是设计模式的新手,我想更好地理解何时实现命令模式.根据我的理解,命令模式旨在将请求和满足该请求所需的逻辑封装到其自己的对象中.
为更复杂的请求创建命令是有意义的,比如生成和保存某个数据库结果的PDF报告.例如:
public class PdfExport implements Command {
private MyEntityDao someDao = new MyEntityDaoImpl();
public PdfExport( ... ) {
// Set up command here...
}
@Override
public void execute() {
List<MyEntity> data = someDao.getData();
// Complex logic to create and export PDF...
}
}
但是,假设我们只有一个极其简单的任务,比如按名称字段删除单个记录.例如:
public class DeleteRecordByName implements Command {
private MyEntityDao someDao = new MyEntityDaoImpl();
String name;
public DeleteRecordByName(String name) {
this.name = name;
}
@Override
public void execute() {
someDao.deleteByName(name);
}
}
如您所见,在第二个命令中实际上没有实现任何逻辑.我提出这样做的唯一原因是,您有一个分层的体系 struct ,并且希望将DAO排除在客户端代码之外,或者保留命令历史记录.
对于像删除单个记录这样简单的事情,创建命令有什么好处吗?
作为后续问题,在创建命令对象之前,是否需要涉及一定数量的逻辑?