Лучший шаблон дизайна для этого выпуска - PullRequest
1 голос
/ 19 ноября 2010

Мне нужно создать различные команды и передать их в качестве аргументов другой программе.

Команды имеют некоторую информацию и формат, но различаются по количеству аргументов.

Например, дляВ операции 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"

Я считаю, что есть более разумные способы сделать это, и, поделившись этим на этом удивительном сайте, я мог бы сделать лучше.

Ответы [ 2 ]

5 голосов
/ 19 ноября 2010

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

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

1 голос
/ 19 ноября 2010

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

public class CommandBuilder() {

    public String buildCreate(..) {..}

    public String buildRetrieve(..) {..}

    public String buildUpdate(..) {..}

    public String buildDelete(..)
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...