Что такое полезная абстракция / контракт, помогающий шаблону Builder создавать пользовательский интерфейс MVC? - PullRequest
2 голосов
/ 20 февраля 2011

Мой симулятор игры в кости меняет свой интерфейс в зависимости от ввода пользователя и модели.Я пытался реализовать шаблон Builder для обработки изменений и необязательных параметров, в то же время допуская использование GroupLayout.

В данный момент я выполняю такой вызов в Контроллере:

if ((model.simRolls <> null) && (inputEvent.getSource == outputBtn) && (model.testType.equals("Success"))) {
    SimView outputScreen = new SimView.Builder(jframe, jpanel).testLabel("SUCCESS TEST OUTPUT", GroupAlignment.LEADING).outputLabel(model.simRolls, GroupAlignment.CENTER).actionButton("Next", GroupAlignment.TRAILING).build();
}

Я ненавижу операторы if, потому что они бесконечны по своему разнообразию.Может ли кто-нибудь помочь мне понять, какую абстракцию, контракт или интерфейс я могу использовать для чистой и точной сборки необходимого интерфейса в MVC?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

Вместо того, чтобы пытаться обработать бесконечную комбинацию в вашем if-statement, почему бы не разбить предложение на несколько более детальных предложений? Таким образом, если вы добавите больше новых функций, вы можете легко добавить еще одно маленькое предложение в существующие предложения, не беспокоясь о том, что не забудете обработать еще одну другую комбинацию (и).

Например: -

SimViewBuilder  builder = new SimViewBuilder(jframe, jpanel);

if (model.simRolls != null) {
    builder = builder.actionButton("Next", GroupAlignment.TRAILING);
}

if (inputEvent.getSource == outputBtn) {
    builder = builder.outputLabel(model.simRolls, GroupAlignment.CENTER);
}

if (model.testType.equals("Success")) {
    builder = builder.testLabel("SUCCESS TEST OUTPUT", GroupAlignment.LEADING);
}

... // add more if statements for other features and configure the builder accordingly

// finally, build it
SimView outputScreen = builder.build();
1 голос
/ 20 февраля 2011

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

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