Помогите мне понять OOD с текущим проектом - PullRequest
1 голос
/ 29 апреля 2009

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

Трудно выразить мою проблему, и, как и у других программистов, этой проблемы нет. Вот изображение части программы: Диаграмма классов

  • EX1. Когда я создаю объект Destination, ему нужна информация из Infopanel. Как это сделать без создания статического геттера в InfoPanel?

  • ех2. DestinationRouting используется в каждом филиале. Мне действительно нужно сделать это в стартере, а затем передать его во всех ветвях?

Не уверен, имеет ли это смысл для кого-либо :) Это проблема, которая повторяется в каждом проекте.

Ответы [ 2 ]

1 голос
/ 29 апреля 2009

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

Чтобы лучше понять вашу объектную модель, я бы попытался классифицировать отношения (линии) на диаграмме классов как "is-a", "has-a" и т. Д., Чтобы вы лучше видно что у тебя есть.

Адресату требуется некоторая информация из InfoPanel, но, скорее всего, не вся информация. Можно ли передавать только необходимую информацию в пункт назначения вместо InfoPanel?

Какое состояние захватывается в классе DestinationRouting, что делает его одиночным? Эта информация принадлежит в другом месте?

0 голосов
/ 29 апреля 2009

Здесь слишком мало информации. Например, я даже не уверен, должны ли MapPanel и InfoPanel быть такими, какие они есть. Я хотел бы попробовать образец декоратора попробовать то, что он стоит. Я также не знаю, почему слушатель является ребенком группы. Нам нужно знать, что это за объекты и что это за система.

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