В моем текущем проекте я реализую шаблон Model-View-Presenter. Большинство моих классов, представляющих доменные объекты, имеют слишком много аргументов конструктора. Возьмем, к примеру, это (ПРИМЕЧАНИЕ: это просто выдуманный класс, просто предположим, что моделям нужно слишком много аргументов):
class Person {
private $id;
private $first_name;
private $middle_name;
private $last_name;
private $birthdate;
private $school_name;
private $school_year_level;
... more properties
public function __constructor($id, $first_name, $middle_name, $last_name, .. etc){
... some code to set the properties
}
}
Предположим, у этого класса есть много независимых значений, необходимых для построения (7+ значений). Какой хороший дизайн я могу использовать? Значения извлекаются из базы данных.
РЕДАКТИРОВАТЬ : для предоставления дополнительной информации моя модель имеет три слоя:
- Модели (объекты-значения) : просто объект домена со свойствами и, возможно, некоторые методы для минимальной обработки данных.
- Объекты доступа к данным : обменивается данными с базой данных. CRUD. Создает объекты модели из извлеченных данных.
- Объекты обслуживания : Предоставляет интерфейс для взаимодействия остальной части бизнес-логики с данными из базы данных.