Лучший дизайн для реализации элемента «По умолчанию» в коллекции - PullRequest
1 голос
/ 12 января 2009

В моем примере у меня есть класс Person с произвольным числом связанных адресов, связанных с ним. Так что будет коллекция Адреса как член класса Person.

Во многих приложениях, которые используют класс Person, мы просто хотим получить объект адреса «По умолчанию». Есть несколько вопросов дизайна относительно реализации:

  1. На каждой записи адреса в БД у меня может быть флаг, чтобы установить, является ли он по умолчанию для коллекции. В качестве альтернативы, я мог бы иметь разные типы адресов (Домашний, Выставление счетов, Доставка и т. Д.) И настроить правила, чтобы сказать, что если у человека есть запись Домашнего адреса, используйте его по умолчанию. Если нет, то используйте доставку и т.д ...
  2. Что касается интерфейса, используемого для получения адреса по умолчанию, мы можем сделать это многими способами, и я хотел бы знать, что лучше для некоторых из SO.

    Address a1 = myPerson.DefaultAddress;
    Address a1 = myPerson.Addresses["Default"];
    Address a1 = myPerson.Addresses.Default;
    

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

1 Ответ

1 голос
/ 12 января 2009

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

Для номера 2 третья реализация звучит как наиболее объектно-ориентированная.

...