Существует ли стандартный термин для класса, который содержит только данные, без логики? - PullRequest
3 голосов
/ 18 сентября 2009

Я ищу стандартный способ сообщить другому программисту, что класс - это просто контейнер данных.

Возьмем этот простой User класс, например:

class User
{
    public string userName { get; set; }
    public string passPhrase { get; set; }
    public Role role { get; set; }
}

"Этот компонент использует класс User, который является просто (вставьте сюда) классом."

Я хочу сказать "модель данных", но я думаю, что это слишком широко. Классы, описанные как модели данных, часто имеют логику.

Ответы [ 11 ]

9 голосов
/ 18 сентября 2009

Иногда их называют DTO - объекты передачи данных.

6 голосов
/ 18 сентября 2009

POD - Обычные старые данные

3 голосов
/ 18 сентября 2009

Как насчет: struct?

2 голосов
/ 18 сентября 2009

«Объект значения» в этом случае более точный, чем «Объект передачи данных». Объект значения содержит только значения; Объект Передачи Данных, кроме того, должен реализовывать метод для передачи этих данных себе или от себя к или от некоторого другого объекта «Бин» также является общепринятым термином, особенно в кругах Java.

1 голос
/ 18 сентября 2009

Это не стандартно, но я часто прикрепляю суффикс «Info» к имени класса, чтобы указать, что класс предназначен только для хранения и передачи информации. Поэтому я бы изменил ваш User класс на UserInfo.

UserData тоже будет работать, как и комментарий "не добавлять никаких методов к этой проклятой вещи" вверху.

1 голос
/ 18 сентября 2009

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

Объекты значений могут иметь поведение, но если у вас есть два независимо созданных объекта значений с одинаковыми значениями полей, и они могут рассматриваться как эквивалентные (например, идентичность записи не имеет значения), вы можете сказать, что вы иметь значение объекта. Но обычно Объекты Значения лучше всего, когда они неизменны.

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

1 голос
/ 18 сентября 2009

Объект передачи данных чаще называют DTO.

1 голос
/ 18 сентября 2009

В Java класс, содержащий только свойства и методы получения / установки для каждого свойства, называется bean-компонентом или POJO (Plain Old Java Object)

1 голос
/ 18 сентября 2009

POXO - Обычный старый объект X, где X - язык по вашему выбору. Ваш случай похож на C #, так что это POCO: обычный старый объект C #.

0 голосов
/ 18 сентября 2009

Объект данных, Объект передачи данных, DTO

...