2010-11-19 65 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(..) 
} 

如果你想创建更多的抽象,你总是可以返回一个对象,只知道如何执行所需的命令。