Бизнес-объекты против сущностей

Есть ли разница между бизнес-объектом и объектом?

Если бы я должен был определить класс класса POCO, например класс Product, это был бы бизнес-объект или объект?

public class Product {
    public int ID { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
    public string Sku { get; set; }
}

Обратите внимание, что в этом объекте нет функциональных возможностей.

Ответ 1

Я бы назвал это DTO (Data Transfer Object). Я также видел их под названием "классы собственности" в прошлые времена. Я бы не назвал его бизнес-объектом, потому что он не имеет поведения и по определению BO определяется их поведением.

Ответ 2

Все объекты являются бизнес-объектами, но не все бизнес-объекты являются объектами.

Объекты - это бизнес-объекты, чья идентификация определяется не их атрибутами, а идентификатором, например Product ID.

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

Я имею в виду, конечно, Объекты и объекты ценности в доменном дизайне.

Ответ 3

Я считаю их одинаковыми, хотя, возможно, если у вас есть некоторые классы, подобные контроллеру (которые работают на вашей модели домена) на вашем бизнес-уровне, они не могут быть названы сущностями. Я бы сказал, что такие классы, как Product, являются как бизнес-объектами, так и объектами, а ProductController - только бизнес-объектом. Сущность представляет объект модели домена - пользователя, книгу, автомобиль и т.д., То, что содержит также свои данные. Я думаю, что это просто вопрос именования, и это не важно, я обычно использую оба термина взаимозаменяемо, но обычно использую "правила", которые я изобразил выше.

Ответ 4

Я не думаю, что существует четкое различие между бизнес-объектами и объектами. Кажется, что разные практикующие используют разные версии.

Смотрите эти комментарии Ayende.

Ответ 5

Термин "сущность" обычно используется как более претенциозный способ сказать "вещь". Рассмотрим диаграммы диаграмм сущности, например - диаграммы, которые показывают взаимосвязь между вещами.

Объекты Buisness - это просто вещи (oops, entities) в бизнес-домене. Я бы сказал, что ваш Продукт является объектом buisness - сравните его с помощью строки String, которая является вещью в домене реализации.

Ответ 6

В моем опыте сущности обычно связаны с CRUD. Бизнес-объекты также могут быть не постоянными объектами, такими как стратегии, политики и т.д.

Ответ 7

Есть ли разница между бизнес-объектом и объектом?

Википедия определяет "бизнес-объект" как то же, что я называю "сущностью". Путаница для меня с этим определением заключается в слове "бизнес", потому что "бизнес-логика" ортогональна сущности. "Сущность" (DTO, "объект данных" и т.д.) Является объектом с полями и методами get/set type. Он содержит данные, но содержит минимальную (если есть) логику.

Объект "бизнес-логика" или "бизнес-правила" инкапсулирует логику более высокого порядка, необходимую для работы с этими объектами. Он использует поля из сущностей для принятия решений и для изменения и сохранения объектов по мере необходимости.