Я рефакторинг старого процедурного веб-сайта PHP в вкусное ООП-приложение с небольшим добавлением дизайна, управляемого доменом, для дополнительного вкуса.
Я продолжаю натыкаться на случаи, когда мне нужны классы, которые могут иметь подклассы, которые являются либо сущностями, либо объектами-значениями.
Например, объект URL. Существует миллион URL-адресов, поэтому все они не могут быть сущностями. Но некоторые из них являются особыми URL-адресами, например, моя домашняя страница. Это сущность.
Другим примером является, скажем, «объект конфигурации». Я бы хотел, чтобы у некоторых конфигураций были идентификаторы, чтобы я мог создавать «пресеты» и управлять ими через онлайн-панель управления. Для тех, кто искатель/репозиторий необходим, чтобы найти их, и ORM необходим для управления их временем жизни. Но для других «не предустановленных» (из той же иерархии классов) я хотел бы иметь возможность загружать их данными, которые были настроены на лету и не нуждаются в сохранении.
Я предполагаю многое:
class factory {
reconstitute($rawdata) {
if (raw data has identity)
load up and return entity version of the class
else
load up and return anonymous/value object version of the class
Все это кажется немного странным.
Есть ли какой-нибудь шаблон, в котором обсуждается лучший способ справиться с этой проблемой?