Должны ли «составные» классы ссылаться на «родительский» класс? - PullRequest
2 голосов
/ 25 ноября 2011

Первый постер, долгое время.

Я пытаюсь разработать простую программу управления проектами в качестве учебного упражнения и пытаюсь выучить и следовать хорошим практикам программирования (кодирование интерфейсов, избегание сеттеров [не совсем уверенно в этом], использование обобщений), но у меня есть несколько проблем которую я пытался исследовать и решать, но не нашел удовлетворительного решения или того, которое не имеет непосредственного смысла для меня.

В конечном итоге он будет использовать внешний интерфейс Wicket с бэкэндом Hibernate / JPA / MySQL, поэтому я использую Карты, а не списки (исключает ошибку «не может одновременно получить несколько пакетов» с Hibernate).

На базовом уровне у меня есть следующие классы:

  • Проект (Timeboxes, Требования, ...)
  • Timebox (Задачи, ...)
  • Требование (Задачи, ...)
  • Задача (...)

Из любой точки цепочки мне нужно знать, кто такие родители и дети. Я хочу знать, что timebox принадлежит определенному проекту, а также имеет задачи (которые также принадлежат требованиям).

Я написал один метод конструктора addRequirement (Requirement, Project) в Project, который добавляет требование к HashMap требований в качестве примерного примера того, что я в настоящее время считаю решением.

  1. Должен ли я поместить сам Проект в Требование, которое связано с ним, или просто в уникальную текстовую ссылку для поиска при необходимости?
  2. Должен ли я придерживаться нехватки сеттеров и идти с большими конструкторами и методами конструктора, или идти с наличием сеттеров.
  3. Должен ли я беспокоиться о том, что хеш-код ограничен целым числом? И я должен сделать ключ для целых чисел hashMaps, а не Strings?

Я загрузил два класса, над которыми я работаю, и любая конструктивная критика была бы очень полезна:).

Проект: http://pastebin.com/yc1dG8FC

Требование: http://pastebin.com/GkPvUZme

Заранее спасибо!

1 Ответ

0 голосов
/ 26 ноября 2011

Подумав некоторое время, я думаю, что это хорошая идея, если вы используете какую-то ленивую инициализацию,

почему?потому что, если вы стремитесь загрузить объекты, вы будете запрашивать все вещи в иерархии

...