2 класса ссылаются друг на друга это нормально? - PullRequest
6 голосов
/ 16 марта 2009

, если у меня есть класс gui и класс для логики, держит ли ссылка в gui на логику и логику на gui очень плохо?

Ответы [ 4 ]

11 голосов
/ 16 марта 2009

Как правило, плохо иметь класс «логика», обладающий знанием класса «gui». Идея разделения - шаблон проектирования Модель / Представление (или Модель / Представление / Контроллер). Представление будет нуждаться в ссылке на модель. Посмотрите внимательно, почему модели нужна ссылка на представление. Обычно, когда модели требуется отправлять информацию в представления, используются прослушиватели событий (см. Таблицу javax.swing и список моделей).

5 голосов
/ 16 марта 2009

Этого следует избегать. В вашем графическом интерфейсе вы можете иметь ссылку на свою доменную логику, но вы не должны ссылаться на свой графический интерфейс в логике своего домена.

Почему? Потому что в противном случае у вас нет преимущества разделения логики GUI и домена на отдельные файлы. Когда ваша логика зависит от вашего графического интерфейса, вы не можете использовать свою логику с другим графическим интерфейсом.

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

Надеюсь, я проясню здесь. :)

0 голосов
/ 05 марта 2010

Графическому интерфейсу, вероятно, нужно предоставить какой-то интерфейс к классу логики, чтобы обновлять графический интерфейс при изменении логического класса.

Логика не должна иметь непосредственного знания о реализации графического интерфейса, только ее интерфейс.

Для этого иногда используется шаблон наблюдателя .

0 голосов
/ 16 марта 2009

Если вы можете избежать этого, вы, вероятно, должны. В противном случае вы можете столкнуться с множеством проблем с циклическими зависимостями позже.

Они действительно должны знать друг о друге, или у вас может быть третья концепция "контроля", ссылающаяся на них?

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