Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Вопрос по ООП, тем кто хорошо шарит в проетировании патернов
Новая тема
Ответить
цитата
11/10/17 в 17:30
S_Flash
(В конексте обьектов, без классов, образно..)
Есть некий обьект, например, - тумба (картинка\thumbnail).
Из базы взято определённое множество данных и при помощи некой фабрики создано множество однотипных этих обьектов тумб со своим личным состоянием.
1. Надо как-то поместить эти обьекты в коллекцию, что-то что может их итерировать в нужном порядке.
2. Надо всю эту коллекцию отправить на обработку, например, нарезать картинку, на которую будет ссылаться img обьекта или ещё что-то..
Сами вопросы:
1) Правильно ли я понимаю, что фабричный метод
самого обьекта же тумбы
должен уметь её же саму помещать в некую коллекцию? Если да, то сама коллекция - это некий сторониий статический обьект? Какой тут патерн?
2) Какой патерн наиболее уместен, чтоб обработать и уничтожить сами обьекты в определённой очерёдности? Например, коллекция умеет, как очередь отдавать и принимать обьекты? Т.е. отправить всю очередь в абстрактую дробилку и та всё раскидает как надо.
цитата
11/10/17 в 18:02
mx-user
Присоединюсь к вопросу!
Я пока создаю отдельные статические классы для коллекций, в которых наборы объектов хранятся в виде массива объектов в свойстве $collection. Собственно, эти классы и порождают объекты (прямиком из базы данных).
Если нужно ко всей коллекции применить некий метод, прогоняю коллекцию при помощи foreach и для каждого экземпляра применяю метод.
Вроде б можно и так, но постоянно терзают смутные сомнения. Дохренищща классов. А если хранить коллекцию в каждом объекте, то получится объект (и класс) охренительных размеров и вообще как-то "нелогично".
цитата
11/10/17 в 18:14
Oswell E. Spencer
ну Repository же ?
$thumbsRepository->addThumb($thumb)
$thumbsRepository->getThumb($thumbId)
$thumbsRepository->getLastByAmmount($ammount)
$thumbsRepository->getSortedByDate()
$thumbsRepository->createMiniaturesForAll()
ну и так далее...
цитата
11/10/17 в 18:58
mx-user
А если состояние объекта в репозитории зависит от состояния других объектов в другом репозитории, как правильно запросить эти объекты?
Например, размер миниатюр, находится в свойствах объекта $Tube->thumbs_width
Объекты класса Tube лежат в репозитории $tubesRepository
Получаем тумбу
$Thumb = $thumbsRepository->getThumb($thumbId);
У тумбы есть свойство $Thumb->tube_id
Через это свойство свойство мы должны добраться к объекту $Tube чтобы получить свойство $Tube->thumb_width
Как должен выглядеть метод $Thumb->getThumbWidth(); ?
цитата
11/10/17 в 19:04
Oswell E. Spencer
насколько я смог понять
$thisthumb->thumbWidth = $tubesRepository->getWidthByTubeId($Thumb->tube_id);
метод getWidthByTubeId получает объект по tube_id и возвращает свойство thumbs_width
по поводу очередей.
в repository могут быть методы отправки id необработанных объектов (isCropped=false)в очередь задач(RabbitMQ или типа того), откуда Cropper сможет брать эти id, получать объекты на обработку, кропить, апдейтить (isCropped=true), ну тут насколько фантазии хватит, например Cropper по крону может напрямую из thumbsRepository брать N объектов в работу и т.д. и т.п.
Очередь на обработку, как мне кажется, тоже в виде repository можно организовать)
queueToCropRepository->add($thumbId) ложим кладем
queueToCropRepository->get($thumbId$ammount) берем обработчиком
queueToCropRepository->remove($thumbId) удаляем после обработки
типа как то так вижу
цитата
11/10/17 в 19:38
mx-user
Oswell E. Spencer писал:
насколько я смог понять
Дада, это, спасибо. Формат коллекциии тубов мы определяем методом, а саму коллекцию передаем как аргумент в методе объекта тумбы.
Иногда случается, что объекты зависят от объектов, а те в свою очередь от третьих, и тогда придется передавать изначально кучу коллекций, но видимо этого не избежать. Особенности архитектуры ))
Новая тема
Ответить
Эта страница в полной версии