В чем разница между бизнес-классом и классом домена? Что подразумевается под постоянными классами?

В чем разница между бизнес-классом и классом домена? Что подразумевается под постоянными классами?

Ответы

Ответ 1

A класс домена - это класс из Модель домена, о котором описывает Мартин Фаулер в Шаблоны архитектуры корпоративных приложений:

Объектная модель домена, которая включает как поведение, так и данные.

alt text

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

И для меня нет никакой разницы с бизнес-классом: бизнес-объект не выполняет более или менее бизнес-логику, чем объект домена (модель домена, где бизнес-логика реализована вне объекты домена называются Anemic Domain Model, которая является уничижительным термином), объекты домена и бизнес-объекты - это то же самое.

Наконец, постоянный класс - это класс, который может быть... сохранен, что означает передачу в памяти представления информации в физическое хранилище, которое будет сохраняться за пределами JVM. Часто упорство реализуется с использованием базы данных (но это не единственное решение, см., Например, распространенность объекта). Типичные операции сохранения включают создание, чтение, обновление и удаление, которые известны как операции CRUD. Объекты домена очень часто сохраняются, т. К. Вы можете выполнять CRUD-операции с ними через API, который скрывает основные сведения выбранного движка персистентности.

Ответ 2

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

Стойкость относится к способности состояния объекта сохранять в некотором хранилище данных (например, xml, текстовый файл или, чаще, база данных). Таким образом, состояние этого типа объекта "сохраняется" независимо от того, работает ли приложение или нет.

Мне кажется, что вам интересно, как Object/Relational Mapping. Я рекомендую прочитать эту статью в Википедии, чтобы начать.

Ответ 3

Термины Business и Domain часто используются синонимом. Лично я предпочитаю термины Domain Model, Domain Object и т.д., Так как они не ограничены в отношении бизнеса (что бы это ни было).

В качестве примера, в Safewhere мы работаем в основном с Идентификацией и авторизацией на основе утверждений. Концепции, которые мы моделируем, имеют очень мало общего с традиционным "бизнесом", поэтому в таких случаях я считаю, что модель домена более подходящая.

Ответ 4

Бизнес-класс обеспечивает логику домена.

Класс домена - это объект, представляющий часть домена.

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

В качестве примера возьмем банковскую транзакцию. У вас будет постоянный класс домена Account. Мой Account (экземпляр) имел бы поле Balance со значением 1000.

Бизнес-логика транзакции, которая обрабатывает дебет, выглядит как AccountDebit и имеет метод debitAccount(Account account, int amount), а в качестве бизнес-логики

int balance = account.getBalance();
if (balance < amount) {
   throw exception("You're too poor");
}
balance = balance - amount;
account.setBalance(balance);
account.commit(); // save the values to persistent store

И я знаю, что деньги обычно не являются int и что дебетовая сумма обычно зачисляется кому-то еще:)

Ответ 5

Бизнес-классы - это классы, которые разработаны и используются для конкретного проекта и вряд ли можно использовать для других проектов.

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

Например, классы JDBC являются классами домена для доступа к базе данных. Классы Swing являются классами домена для построения и манипулирования графическим интерфейсом. Form1, который содержит набор компонентов, используемых для отображения "Hello World" messsage, - это бизнес-класс.