gpt4 book ai didi

java - 如何实现 CRUD 操作的命令模式

转载 作者:行者123 更新时间:2023-11-30 04:50:30 24 4
gpt4 key购买 nike

我有一个带有创建、更新、删除和选择操作的用户界面,因此我想使用命令模式来设计它

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com