Вопрос:
Есть ли предпочтительный шаблон проектирования для обработки объекта в разных контекстах? Например: если мне нужно ПОЛУЧИТЬ пользователя из базы данных, то этому объекту необходимо , чтобы иметь идентификатор и уровень привилегий. Однако, если я хочу создать НОВОГО пользователя для регистрации, тогда ему не нужен идентификатор, так как он будет добавлен в базу данных через auto_increment. Пользователю GUEST не нужен идентификатор, но имя пользователя должно быть «Гость».
Попытки решения
Использование конструктора, похоже, игнорирует контекст.
Создание новых объектов для selected_user, new_user и guest_user кажется расточительным.
Создание методов внутри пользовательского объекта, которые можно использовать для его уникальной инициализации, заманчиво.
На данный момент я считаю, что я должен создать отдельную фабрику, которая имеет такие функции, как create_guest ($ x), create_new_user ($ x, $ y), create_registered_user ($ x, $ y, $ г)? Это позволило бы объекту пользователя иметь одну цель: удерживать пользователя (в то же время позволяя ему иметь конструктор, устанавливающий минимальные требования), а также иметь фабрику пользователей с единственной целью: инициирование различных типов пользователей.
Прошу прощения за любое невежество, просто ищите лучший шаблон проектирования для обработки одного и того же объекта в уникальном контексте.
Пример:
<?php
class user
{
private id;
private username;
private privilege;
public function __construct()
{
some code...
}
public function is_admin()
{
some code...
}
}
?>