Помогите мне понять OOD в текущем проекте

StackOverflow https://stackoverflow.com/questions/803504

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

  • ex2.DestinationRouting используется в каждой ветке.Действительно ли мне нужно сделать это в начале, а затем передать его во все ветки?

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

Это было полезно?

Решение

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

Другие советы

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

Чтобы лучше понять вашу объектную модель, я бы попытался классифицировать отношения (линии) на вашей диаграмме классов как «есть», «есть» и т. д.чтобы вы могли лучше видеть, что у вас есть.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top