Я получил следующее письмо от коллеги. Мой вопрос это точно. Вложение Business Objects - плохая практика? Кто-нибудь может подсказать это?
Вложенные объекты
Когда любая переменная создается в C #, она занимает часть памяти на веб-сервере. Поскольку у нас будет много инструментов, работающих на одном сервере, еще более важно убедиться, что мы не создаем объекты, если не планируем их использовать.
Используя в качестве примера второй объект сотрудника, приведенный выше ... Если нам также нужно было узнать идентификатор руководителя работника (и это было все, что инструмент заполнял и использовал), мы хотели бы убедиться, что класс Employee содержит соответствующую информацию наряду с учетом памяти и процессов в инструменте.
Мы добавили бы строковую переменную 'supervisorId' в класс Employee и добавили соответствующие методы получения и установки.
С другой стороны, мы бы хотели уклониться от вложения другого объекта в объект сотрудника. Такие как:
Public Class Employee {
приватная строка firstName;
приватная строка lastName;
приватная строка empId;
частный руководитель работника;
public string FirstName {
get { return firstName; }
set { firstName = value; }
}
public string LastName {
get { return lastName; }
set { lastName = value; }
}
public string EmpId {
get { return empId; }
set { empId = value; }
}
public Employee Supervisor{
get { return supervisor; }
set { supervisor = value; }
}
}
В этом случае мы не всегда можем использовать значения в экземпляре 'Supervisor' объекта Employee, но переменные создаются в памяти. Это может оказать потенциально катастрофическое влияние на производительность.
В некоторых случаях необходимо вложение объектов:
Пример: (Category :: Question) Где каждой категории может быть присвоен список вопросов в массиве.