Контроллер MVC в Java качания приложения - синглтон или статический


Эта статья оставила меня в замешательстве.

В объяснении методики проектирования MVC в Java качания приложения автор определяет класс как Singleton и реле серии вызовов контроллера для каждой операции.

В объект вида:

...    
Controller.getInstance().setOwner(this);
Controller.getInstance().setNameTextField(this.nameTextField);
Controller.getInstance().setEmailTextField(this.emailTextField);
Controller.getInstance().processForm();
...

И внутри класса контроллера:

public void processForm() {
    result1 = doSomethingWithName(this.nameTextField.getText());
    result2 = doSomethingWithEmail(this.emailTextField.getText());
    this.owner.setResult(result1, result2);
}

Я не понимаю, почему это стало настолько сложным! Разве не было бы проще, меньше ошибок и более модульных просто:

Controller.processForm(this, this.nameTextField.getText(), this.emailTextField.getText());

и

public static void processForm(OwnerClass owner, String name, String email) {
    result1 = doSomethingWithName(name);
    result2 = doSomethingWithEmail(email);
    this.owner.setResult(result1, result2);
}

Кто-нибудь знаком с этим шаблон дизайна? Есть причина для этого метода?



4023
5
задан 9 марта 2011 в 01:03 Источник Поделиться
Комментарии
2 ответа

Прошло много времени с тех пор, как я последний раз использовал MVC подход в разгаре, но я сразу заметил некоторые вещи, которые я не делал.


  1. Не использовать синглтон, синглтоны это зло!

  2. Проходя просмотреть компонентов к контроллеру? Когда я делаю MVC, то я, как правило, проходят регулятор, на мой взгляд, элементы, предпочтительно только интерфейс. Мнение можете запросить действия на контроллере. Это позволяет для полного распаривания вид. Так что вы можете также переключиться на что-то другое, чем качели. Это, вероятно, не "по умолчанию" подход MVC с Однако качели.

Так что да, кажется, я бы с вами согласился. Возможно, поищите другие примеры MVC с качели. Эта статья не выглядит особенно привлекательным, ИМХО.

3
ответ дан 9 марта 2011 в 02:03 Источник Поделиться

Я согласен со Стивеном в отношении одиночек. Думаю, самый удобный способ, чтобы вызвать что-то вроде этого строитель-шаблон-подход ("интерфейсы свободно") аналогичное StringBuilder:

Controller.getInstance().setOwner(this)
.setNameTextField(this.nameTextField);
.setEmailTextField(this.emailTextField);
.processForm();

Это для Java-близкое от имени и по умолчанию аргументы в других языках (напр. тебе не нужно помнить порядок параметров, вы можете сделать некоторые из них необязательно, и с немного типа обман вы можете убедиться, что processForm может быть только вызывается, если все обязательные аргументы находятся).

0
ответ дан 7 апреля 2011 в 07:04 Источник Поделиться