2010-03-04 3 views
2

Скажем, у меня есть проект GUI Java чего-то, что имитирует банкомат, и у меня есть классы, такие как:Как называется этот шаблон дизайна java?

- RegisterWindow 
- LoginWindow 
- MainAccountOptionsWindow 

и т.д., где все классы сосредоточены вокруг панели/окна, а не нормальный дизайн OO. Кто-то сказал мне, что это конкретный шаблон дизайна, возможно, что-то начинающееся с E, я просто не могу вспомнить, что они сказали сейчас! Кто-нибудь знает? Это вообще плохо, чтобы проектировать вещи таким образом?

благодаря

+0

На самом деле невозможно дать ответ на этот вопрос на основе предоставленной вами информации. – willcodejavaforfood

ответ

5

Это зависит от того, как события распространяются между в/из окон ,

Приятная вещь с MVC заключается в том, что существует так много разных типов MVC, что просто говоря «MVC» не означает очень много: при разговоре с MVC и Java многие люди на самом деле ссылаются на MVC «модель 2» Sun, но это не всегда так, далеко от него.

Ваш случай может быть изменение HMVC/PAC, но я не могу сказать точно, потому что вы только вставили имена, связанные с видом: HVMC был независимо открыт программистами, не знавших о более старой технике «PAC». PAC является более строгим подмножеством HMVC, поскольку в PAC представление не может регистрировать обратные вызовы непосредственно в модели (каждое уведомление должно проходить через контроллер, в HVMC в некоторых случаях контроллер может быть обойден).

200KLOC codebase где это PAC везде (поэтому более строгая подмножество HMVC).

Вы должны знать, что если вы действительно используете вариации MVC, это не «плохой дизайн», потому что он работает очень хорошо, но это, конечно, не «OO». В реальных объектах проектирования OO знают, как рисовать себя, и MVC, по определению, отключает представление от ваших объектов, что вовсе не OO. На самом деле это анти-тезис ОО. Есть большие статьи по этому вопросу, которые можно найти в Google. (Вкратце: развязка может быть очень хорошей вещью, но развязка не подразумевает «OOness»).

В дополнение к этому, это, как правило, не является проблемой, чтобы быть «не OO вообще», потому что 99% программ на Java не OO: они прославили процедурные программы, написанные с использованием языка, который мог быть использован для сделать OO, но это обычно не так.

Кстати, если вы посмотрите на Википедию в списке языков, для которых реализована реализация MVC, вы увидите, что многие из них на самом деле не являются языками OO (даже не гибридные языки OO).

+2

upvote для "прославленных процедурных программ ..." –

0

Похоже, что вы используете хороший старый шаблон MVC (Model/View/Controller), где разделены вычисление данных и визуализации данных. Тот факт, что Представления выглядят как окна Swing здесь, не имеет значения - это могут быть JSP или Excel экстракты ...

+0

Нет, это совсем не похоже на то, что у него есть куча окон :) – willcodejavaforfood

+0

Если xxxWindow классы содержат бизнес-логику (которая, как представляется, так), то это определенно не MVC. – Kris

1

Есть много возможностей в этом сценарии:

  • Model-View-Controller
  • Презентация-абстракция-контроль
  • Model View Presenter
  • вид модели ViewModel
  • многоуровневая архитектура (часто трехуровневый)
  • Сервисно-ориентированная архитектура
  • Обнаженные объекты

См. Это article для получения дополнительной информации.

Смежные вопросы