我有創建,更新,刪除和選擇操作的用戶界面,所以爲了這個,我想到了用命令模式如何實現的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