Реклама на сайте Advertise with us

Вопрос по ООП, тем кто хорошо шарит в проетировании патернов

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

📈sflash.biz

С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447


Передовик Master-X (16.04.2018) Передовик Master-X (16.07.2018) Передовик Master-X (16.12.2022) Передовик Master-X (01.01.2023)
Ссылка на сообщениеДобавлено: 11/10/17 в 17:30       Ответить с цитатойцитата 

(В конексте обьектов, без классов, образно..)
Есть некий обьект, например, - тумба (картинка\thumbnail).
Из базы взято определённое множество данных и при помощи некой фабрики создано множество однотипных этих обьектов тумб со своим личным состоянием.
1. Надо как-то поместить эти обьекты в коллекцию, что-то что может их итерировать в нужном порядке.
2. Надо всю эту коллекцию отправить на обработку, например, нарезать картинку, на которую будет ссылаться img обьекта или ещё что-то..

Сами вопросы:
1) Правильно ли я понимаю, что фабричный метод самого обьекта же тумбы должен уметь её же саму помещать в некую коллекцию? Если да, то сама коллекция - это некий сторониий статический обьект? Какой тут патерн?
2) Какой патерн наиболее уместен, чтоб обработать и уничтожить сами обьекты в определённой очерёдности? Например, коллекция умеет, как очередь отдавать и принимать обьекты? Т.е. отправить всю очередь в абстрактую дробилку и та всё раскидает как надо.

0
 



С нами с 19.05.17
Сообщения: 191
Рейтинг: 326

Ссылка на сообщениеДобавлено: 11/10/17 в 18:02       Ответить с цитатойцитата 

Присоединюсь к вопросу!

Я пока создаю отдельные статические классы для коллекций, в которых наборы объектов хранятся в виде массива объектов в свойстве $collection. Собственно, эти классы и порождают объекты (прямиком из базы данных).

Если нужно ко всей коллекции применить некий метод, прогоняю коллекцию при помощи foreach и для каждого экземпляра применяю метод.

Вроде б можно и так, но постоянно терзают смутные сомнения. Дохренищща классов. А если хранить коллекцию в каждом объекте, то получится объект (и класс) охренительных размеров и вообще как-то "нелогично".

0
 
+


С нами с 09.05.17
Сообщения: 661
Рейтинг: 586


Передовик Master-X (01.08.2017) Передовик Master-X (01.02.2018) Передовик Master-X (16.10.2019) Передовик Master-X (01.11.2019)
Ссылка на сообщениеДобавлено: 11/10/17 в 18:14       Ответить с цитатойцитата 

ну Repository же ?


$thumbsRepository->addThumb($thumb)
$thumbsRepository->getThumb($thumbId)
$thumbsRepository->getLastByAmmount($ammount)
$thumbsRepository->getSortedByDate()
$thumbsRepository->createMiniaturesForAll()

ну и так далее...

Покупаем пуш траффик
GoPusher 2 - рули своими пуш подписчиками

9
 



С нами с 19.05.17
Сообщения: 191
Рейтинг: 326

Ссылка на сообщениеДобавлено: 11/10/17 в 18:58       Ответить с цитатойцитата 

А если состояние объекта в репозитории зависит от состояния других объектов в другом репозитории, как правильно запросить эти объекты?

Например, размер миниатюр, находится в свойствах объекта $Tube->thumbs_width

Объекты класса Tube лежат в репозитории $tubesRepository

Получаем тумбу
$Thumb = $thumbsRepository->getThumb($thumbId);

У тумбы есть свойство $Thumb->tube_id

Через это свойство свойство мы должны добраться к объекту $Tube чтобы получить свойство $Tube->thumb_width

Как должен выглядеть метод $Thumb->getThumbWidth(); ?

8
 
+


С нами с 09.05.17
Сообщения: 661
Рейтинг: 586


Передовик Master-X (01.08.2017) Передовик Master-X (01.02.2018) Передовик Master-X (16.10.2019) Передовик Master-X (01.11.2019)
Ссылка на сообщениеДобавлено: 11/10/17 в 19:04       Ответить с цитатойцитата 

насколько я смог понять


$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) удаляем после обработки

типа как то так вижу

Покупаем пуш траффик
GoPusher 2 - рули своими пуш подписчиками

9
 



С нами с 19.05.17
Сообщения: 191
Рейтинг: 326

Ссылка на сообщениеДобавлено: 11/10/17 в 19:38       Ответить с цитатойцитата 

Oswell E. Spencer писал:
насколько я смог понять

Дада, это, спасибо. Формат коллекциии тубов мы определяем методом, а саму коллекцию передаем как аргумент в методе объекта тумбы.
Иногда случается, что объекты зависят от объектов, а те в свою очередь от третьих, и тогда придется передавать изначально кучу коллекций, но видимо этого не избежать. Особенности архитектуры ))

1
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »