Где я должен поместить контекстные данные, связанные с объектом, который на самом деле не является свойством объекта? - PullRequest
3 голосов
/ 27 апреля 2010

У меня есть класс автомобилей. Он имеет три свойства: идентификатор, цвет и модель.

В конкретном запросе я хочу вернуть все автомобили и их свойства, а также я хочу вернуть поле true / false с именем "searcherKnowsOwner", которое я вычисляю в своем запросе к базе данных в зависимости от того, является ли человек ведение поиска знает владельца. У меня есть функция базы данных, которая берет идентификатор поисковика и идентификатор автомобиля и возвращает логическое значение.

Мой класс автомобилей выглядит так (псевдокод):

class Car{
  int id;
  Color color;
  Model model;
}

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

Должен ли я добавить поле в класс Car, a boolean searcherKnowsOwner? Это не собственность автомобиля, а собственно пользователь, проводящий поиск. Но это кажется наиболее эффективным местом для размещения этой информации.

Ответы [ 2 ]

3 голосов
/ 28 апреля 2010

Оставьте объект Car и Owner неизменным. Определить 2 класса SearchCriteria и SearchResults

SerachCriteria будет содержать критерии поиска, предоставленные конечным пользователем, а логика вашего приложения будет возвращать объект типа SearchResults, который является коллекцией Cars.

Вы можете поддерживать флаг в SearchResult, соответствующий каждому автомобильному объекту в результате, если владелец известен.

1 голос
/ 27 апреля 2010

Я бы смоделировал это так:

class Car{
  int id;
  Color color;
  Model model;
  Owner owner;
}

class Owner {
  Boolean knowsSearcher;
}

Теперь тип Car имеет Owner (немного назад от реальной жизни, да), а тип Owner имеет поле, указывающее, знают ли они искатель.

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