2010-11-19 139 views
1

我需要構建各種命令並將它們作爲參數傳遞給另一個程序。此問題的最佳設計模式

這些命令共享一些信息和格式,但參數數量不同。

例如,對於一個CRUD操作,我可能會生成以下命令字符串:

"create""host_ip""database""user_id""profile""personal_data1""personal_data2""personal_datan" 
"retrive""host_ip""database""user_id" 
"update""host_ip""database""user_id""personal_data1""personal_data2""personal_datan" 
"delete""host_ip""database""user_id" 

我相信有更好的方案,通過分享它在這個驚人的網站做到這一點&,我可能會做的更好工作。

+1

與之前的問題相關:http://stackoverflow.com/questions/4221444/passing-arguments-form-java-program-to-bash-script-that-c​​all-another-java-program – 2010-11-19 17:30:13

+2

你使用任何類型的框架?查看Spring Framework JDBC支持:http://static.springsource.org/spring/docs/current/spring-framework-reference/html/jdbc.html – Griff 2010-11-19 17:33:33

回答

5

也許是太明顯,但你有沒有想過的Command Pattern?

在面向對象的編程, 命令模式是一個對象來表示 和封裝所有的信息 設計模式 需要在稍後的 時間調用方法。此信息包括方法名稱 ,擁有 方法的對象和方法 參數的值。與命令模式 相關聯的三個術語始終是客戶端,調用者和接收者。 客戶端實例化命令對象 並提供所需的信息 稍後調用該方法。 調用者決定何時調用方法 。接收者是包含 該方法的代碼的類的一個 實例。使用命令 對象可以更容易地構建需要 委託,序列 通用部件或執行方法在他們選擇 而不需要知道 方法或方法參數所有者的時間 調用。

1

看起來您需要一個可以構建應用程序命令的構建器類。如果在所有構建方法之間使用了任何對象,則通過構建器構造函數發送它。

public class CommandBuilder() { 

    public String buildCreate(..) {..} 

    public String buildRetrieve(..) {..} 

    public String buildUpdate(..) {..} 

    public String buildDelete(..) 
} 

如果你想創建更多的抽象,你總是可以返回一個對象,只知道如何執行所需的命令。