Какой шаблон проектирования я должен использовать для создания графического интерфейса в Java, а также в следующем сценарии? - PullRequest
1 голос
/ 15 февраля 2012

Я занимаюсь разработкой автономного приложения на Java с использованием Swing API.Мне нужны рекомендации экспертов в следующем сценарии.

У меня есть пользовательский интерфейс, который показывает некоторую информацию о сотруднике.

В меню есть четыре операции, такие как добавление emp, редактирование emp, просмотр emp, удалениеemp.

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

Я разработал класс, который создает графический интерфейс выше;Я использовал шаблон проектирования Singleton для создания GUI.

Как в зависимости от выбранной операции;в GUI некоторые компоненты отключаются, удаляются или добавляются, а затем GUI создается и показывается пользователю.

Я думал о передаче строки, описывающей операцию, в графический интерфейс construncor, а затем выполнял вышеуказанные действия, связанные с компонентами.Но поскольку я использовал шаблон Singleton Design, это невозможно.

Что я должен сделать в приведенном выше сценарии, чтобы выполнить все мои требования?Какой шаблон проектирования вы предлагаете мне для вышеописанного сценария, а также для создания GUI?

Пожалуйста, помогите мне эксперты!

Ответы [ 3 ]

2 голосов
/ 15 февраля 2012

Создайте класс EmployeeModel, чтобы сохранить все поля сотрудника. Добавьте еще одно поле, например int или enum для сохранения желаемого действия.

В JDialog (или JFrame) проверьте поле действия и в зависимости от кнопок показа действия и / или включите отключение элементов управления, которые представляют поля.

1 голос
/ 15 февраля 2012

, как мудро упомянул duffymo, я бы посоветовал попытаться получить более высокую абстракцию с DP, потому что они должны показаться интуитивно в качестве доказательства, если они не появляются, это подразумевает, что они явно не подходят ... Синглтон не подходитлучший и приносит много ограничений .... У меня странное впечатление, когда я отвечаю на ваш вопрос ... зачем использовать один и тот же вид для 4 разных вариантов использования?Я думаю, вы не найдете никакого волшебного шаблона ... Конечно, вы могли бы создать очень общий экран и использовать шаблон наблюдателя / наблюдаемого, пытаясь скрыть / показать некоторые виджеты, но это может стать очень сложным в обслуживании и для какой выгоды?

Джерси HTH

1 голос
/ 15 февраля 2012

Создайте Enum с операциями:

public enum Operation{
  ADD, EDIT, VIEW, DELETE
}

И в вашем графическом интерфейсе создайте метод:

public void setOperation(Operation op){
    case ADD: ...
    case EDIT: ...
    case VIEW: ...
    case DELETE: ...
}

Другой вариант будет иметь вид наследования графического интерфейса:

abstract class EmployeeView
class AddEmployeeView extends EmployeeView
class EditEmployeeView extends EmployeeView
class ViewEmployeeView extends EmployeeView
class DeleteEmployeeView extends EmployeeView

Таким образом, ваш абстрактный класс будет иметь обязательные поля, а подклассы будут просто включать / отключать их.

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