我有创建,更新,删除和选择操作的用户界面,所以为了这个,我想到了用命令模式如何实现的CRUD操作
MyServlet
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException
{
InsertCommand insertCommnd = new InsertCommand();
DeleteCommand deleteCommnd = new DeleteCommand();
设计其命令模式//创建DTO员工与请求参数并把它传递给调用者
if(req.getParameter("action").equals("insert"))
Invoker invoker = new Invoker();
invoker.setCommand(insertCommnd);
invoker.pressButton(emp);
}
// * 祈求 *
public class Invoker
{
private Command command;
public void setCommand(Command command)
{
this.command = command;
}
public void pressButton(Employee emp)
{
command.execute(emp);
}
}
// 命令的.java
public interface Command
{
public void execute();
}
的DeleteCommand的.java
public DeleteCommand implements Command
{
Employee emp;
public DeleteCommand(Employee emp)
{
this.emp = emp;
}
public void execute()
{
// SQL Query to delete Records
}
}
InsertCommand.java
public InsertCommand implements Command
{
Employee emp ;
public InsertCommand(Employee emp)
{
this.emp = emp;
}
public void execute()
{
// SQL Query to insert Records
}
}
同样有一个更新记录命令
我的问题是,我怎么能解决这个在选择操作的情况下,因为它从数据库返回的ArrayList?
也请分享你对这个设计的想法,因为我是设计软件的新手。
这是“简单的\”巴掌一切\“”的方法,我在我的答案提及。它的确比CQRS更普遍,并且在大多数情况下完全有效。有些情况下CQRS更适合,所以“错误的模式”有点过于强调IMO(我自己的“一巴掌”措辞可能有点过于苛刻)。两者都是有效的,DAO更容易和更普遍。 – Barend 2012-03-31 08:21:19
@ user384706谢谢,所以你的意思是说,如果返回类型将是相同类型知道的情况下去命令模式? – Pawan 2012-03-31 08:22:26
@ yyyi777一个不错的可靠方法是使命令类实现'java.util.concurrent.Future'(最简单的方法是从java.util.concurrent.FutureTask中扩展或包装)。 – Barend 2012-03-31 08:26:10