Паттерны проектирования для начинающих с примерами на PHP

preview_player
Показать описание
🔥Промокод на скидку 15% на все курсы ITVDN - 4YOUTUBE

Начинающие разработчики редко задумываются о построении структуры в приложении, и это негативно отражается на качестве кода. Мне часто приходилось видеть "спагетти-код" написанный не очень опытными разработчиками. Дальнейшая разработка с использованием такого кода доставляем массу неудобств и сложностей, которых можно было бы избежать в случае правильного изначального проектирования.

Если хочешь писать ещё больше качественный код, убрать дублирование, сделать код больше понятным для других разработчиков - тогда изучение паттернов проектирования тебе очень поможет.

Спикер — Демьян Костельный, Middle PHP Developer

План вебинара:

- Знакомство. Введение.
- Паттерны, кто их вообще придумал?
- Почему паттерны всюду используют, их преимущества.
- Порождающее паттерны.
- Использование на примере приложений
- Каталоги паттернов и их польза.
- Пару слов о рефакторинге кода.
- Итоги
Рекомендации по теме
Комментарии
Автор

🔥Промокод на скидку 15% на все курсы ITVDN - 4YOUTUBE

ITVDN
Автор

Очень доходчиво объясняешь. Спасибо большое.

От себя добавил бы - вместе с паттернами надо объяснять принцип ООП (интерфейсы, полиморфизм и тд). На своём опыте понял, что изначально у меня было о последнем неверное представление. Я недогонял "за каким" нужны интерфейсы и абстрактные классы, если их приходится переписывать. Казалось, что это тупое наследования для расширения родительного класса.
С шаблонами впервые столкнулся в книге Зандстра (вроде так зовут автора) и для меня это было каким-то космосом. Первый вопрос "это ещё что и нафиг оно нужно?" :)

И только позже, столкнувшись с расширением своих приложений, дошло, что у меня что-то не так с архитектурой и, чтоб добавить что-то новое, надо половину переписывать.

Так же надо объяснять простыми словами - какие задачи решает тот или иной шаблон. Иначе нифига не ясно.

МихалИваныч
Автор

Фабричный метод подразумевает, что дочерние классы должны наследоваться от Creator и реализовывать метод создания сущности. На первой диаграмме, связанной с фабричным методом, видно, что должно быть два класса: CellPhoneCreator и SmartPhoneCreator. Вместо этого дальше в видео, создается просто класс с двумя методами, которые создают сущности CellPhone и SmartPhone.

artranerg
Автор

Чувак, проставь, пожалуйста, таймкоды.

МихалИваныч
Автор

Хотелось бы видеть эти примеры в фреймах а не просто на голом коде

ТимурСафаров-вч
Автор

По мне пример стратегии, неверен, Стратегия это поведенческий паттерн, а значит поле $flyBehavior должно быть или публичным, или к нему надо ставить сеттер дабы была возможность его изменить из вне, интерфейс крайне неудачный, если реализация интерфейса должна подразумевать поведение объекта, почему бы не назвать к примеру IMovable c одним методом move() . Далле уже в стратегии мы просто делаем обкаст к интерфейсу а не к классу реализующим данный интерфейс к примеру
class Animal{
public $movable;
public function __construct(IMovable $movable)
{
$this->movable = $movable
}

public function move()
{
$this->movable->move()
}
}
class Duck extends Animal{}
$animal = new Duck(new Fly());
$animal->move();
$animal->movable = new Run();
$animal->move();
В вашем примере просматривается зависимость в объектах и для создания других типов поведения вы будете вынуждены плодить интерфейсы для каждого отдельного типа поведения, это немного сбивает с толку

theice-ro
Автор

Почему синглттон не через статик метод и приватный конструктор?

zitskycom
Автор

Больше всего мне "нравится", когда называют одним и тем же словом разные Методы ( function fly() в классе Duck и вызов Метода ->fly()...). По мне так Метод лучше назвать type_of_fly(), поскольку в него передается создание экземпляра конкретного класса И вызов метода fly(). Попробуйте после $this->flyBehavior->fly(); добавить $this->fly(); (55:47)

КоньковАндрей-вю
Автор

Юзай автозагрузку, чтоб класс грузить с именем 123 из файла 123.php

pavelbbb
Автор

Не фига не понятно, но очень интересно)

Tornado-lnfq
Автор

слушать нереально. "то, что есть, что именно, например...ээээм...ну когда класс реализует функцию...эээм...это и есть паттерн стратегии" - после этого я дропнул просмотр. если смотреть без звука, то шанс есть, но, как мне кажется, есть неточности в реализации. поэтому дизлайк.

SiegeMechanic
Автор

Стратегия это не структурный, а поведенческий паттерн

eeddeellwweeiiss
Автор

Интерфейсы - это классы без реализации. Интерфейс включать в класс смысла нету и это просто набор лишнего кода, если на выходе не включать контроллеры

forexwithak
Автор

Автор неправильно реализовал паттерн фабричный метод, получилось простая фабрика без ФАБРЧНОГО МЕТОДА

xuesos