我有一个带有创建、更新、删除和选择操作的用户界面,因此我想使用命令模式来设计它
MyServlet
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException
{
InsertCommand insertCommnd = new InsertCommand();
DeleteCommand deleteCommnd = new DeleteCommand();
//创建带有请求参数的 DTO Employee 并将其传递给调用者
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();
}
删除命令.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,我该如何处理这个问题?
另外,请分享您对此设计的想法,因为我是设计软件的新手。
最佳答案
您采用了正确的方法,这意味着您正在尝试在代码中使用设计模式。
在您的情况下,您使用了错误的模式。您应该使用 DAO
模式。
但是说错了并不代表你的方法不能用,只是DAO是DB的标准而已。
在您的情况下,您的问题是您的 execute
方法返回 void
并且您需要一个返回 List
的方法(额外)。
您可以为 select 创建第二个方法,该方法返回 List
并为其指定一个通用名称,然后在其他命令中只需抛出 UnsupportedMethod
异常
例如
public interface Command
{
public void execute();
public List fetch();
}
关于java - 如何实现 CRUD 操作的命令模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9954198/