2010-11-19 2 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-call-another-java-program –

+2

Используете ли вы какие-либо тип каркасов? Проверьте поддержку Spring Framework JDBC: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/jdbc.html. – Griff

ответ

5

Может быть, слишком очевидно, но вы думали о Command Pattern?

В объектно-ориентированном программировании, то команда является шаблоном в которого объект используется для представления и инкапсулировать всю информацию необходимо вызвать метод на более позднем этапе . Эта информация включает имя метода , объект, которому принадлежит метод и значения для метода . Три условия всегда , связанные с шаблоном команды являются клиентом, подписчиком и получателем. Клиент создает экземпляр командного объекта и предоставляет требуемую информацию для вызова метода позднее. Соискатель решает, когда должен быть вызван метод . Приемник представляет собой экземпляр класса, который содержит код метода . Использование команды объектов облегчает построение основных компонентов, необходимых для делегата, последовательности или выполнить метод вызывает в момент их выбор без необходимости знать владелец метод или параметры методы.

1

Похоже, вам нужен класс строителя, который может создавать команды приложения. Если есть какие-либо объекты, которые используются между всеми методами сборки, отправьте их через конструктор строителя.

public class CommandBuilder() { 

    public String buildCreate(..) {..} 

    public String buildRetrieve(..) {..} 

    public String buildUpdate(..) {..} 

    public String buildDelete(..) 
} 

Если вы хотите создать больше абстракции, вы всегда можете вернуть объект, который просто знает, как выполнить указанную команду по требованию.

 Смежные вопросы

  • Нет связанных вопросов^_^