Единственный нормальный объяснятель паттернов на ютубе!
@mr_DorianGray10 жыл бұрын
Понравилось, с юмором ) Был опыт просмотра видео профессиональных программистов ..бу-бу-бу ... бу-бу-бу ... через 10 минут начинаю засыпать. Чтобы преподавать - тоже нужен талант )
@hameltomor10 жыл бұрын
***** Где Вы преподаете? Я хочу на ваши лекции!! )) Случайно не Одесса?))
@global_silence26236 жыл бұрын
Очень много нового на канале вашем узнаю, спасибо) Вообще я думал, что настоящие тру программисты должны знать все паттерны. Всегда думал, как их все запихать в голову. А оказывается не обязательно их все знать.
@insbhor4 жыл бұрын
Хорошо объясняете, фундаментально
@Alex11Fox5 жыл бұрын
Блин, да тут просто клондайк знаний про Джаву!! Всё есть, от начала Java Core до проектировании. И не надо на курсы там идти, всё тут есть))
@alexander_brun3 жыл бұрын
true programmer hairstyle
@sergeyshestakov4936 Жыл бұрын
Спасибо
@Das.Kleine.Krokodil2 жыл бұрын
Спасибо!
@dmytrodemydenko6 жыл бұрын
очень толково
@hello_world_zz6 жыл бұрын
Спасибо, классно!
@Gusto200003 жыл бұрын
На PHP самый понятный пример синглтонов - никакой магии, как написано так и работает, вообще песня!
@tr2336 жыл бұрын
Java Design Patterns A Tutorial всем рекомендую эту книжку прочитать
@xfgweb7 жыл бұрын
Сергей можете рассказать о cqrs + event sourcing ? И что делать с логом событий если перепроектировали агрегат.
@DomiNoR7775 жыл бұрын
на сколько информация актуальна в 2019? Наткнулся на канал, а тут кладезь информации, но как понял уже не первой свежести( Что делать? Уделять силы и время на просмотры или лучше поискать что-то новое?
@MichioSempai5 жыл бұрын
Это общие практики они актуальны и по сей день. К тому же если вы пойдете на уже существующей проект то он будет написан либо по этим паттернам либо как бог на душу положет.
@AnaRxistBoD5 жыл бұрын
Как человек, который недавно проходил собеседование на джуна, скажу, что одним из ключевых вопросов были шаблоны проектирования и необходимость использования синглтонов в конкретном живом коде приложения. Так что актуальность присутствует.
@wanes10110 жыл бұрын
Я подумал, а если даже и знать больше паттернов чем 9 и использовать несколько их в проекте и при этом просто все документировать, то я думаю, что вполне можно будет определить это решение так или не так сделано, этот коммент к 42-43 минуте. Т.е. просто структурировать как математику или химию
@aleksandrsavvopulo54737 жыл бұрын
Меня удивило описание синглтона, когда говорите, что это паттерн для ограничения количества экземпляров, и приводите в пример пул соединений. Википедия говорит, что все таки именно один экземпляр должен быть. "In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one object. ".
@homo-ergaster6 жыл бұрын
Ну какая разница один или пять. Сколько хочешь - столько ограничиваешь не меняя архитектуру. Обычно, действительно, один. А в википедии столько херни написано, что даже страшно представить.
@0imax3 жыл бұрын
@@homo-ergaster Большая разница. Реализация синглтона с единственным экземпляром имеет минимальное отношение к ООП, так как контроль "единственности" базируется на особенностях конкретного языка. Сделать то же самое для 2+ экземпляров таким же методом не получится.
@homo-ergaster3 жыл бұрын
@@0imax Он базируется на особенностях языка только если в язык (или фреймворк) встроена поддержка синглтона. Если она не встроена, реализация везде одинаковая: приватный конструктор, статический метод getInstance и статическая переменная хранящая либо единственный экземпляр синглтона, либо коллекцию/массив с несколькими экземплярами.
@0imax3 жыл бұрын
@@homo-ergaster Реализация в принципе везде одинаковая: приватный конструктор, приватное поле и getInstance. Проблема в "если". Паттерн, несмотря на свою ООП-шность, на деле оказывается достаточно низкоуровневым. Практика показывает, что этот шаблон сильно зависит от языка и без хитростей не везде адекватно реализуется, либо решение для единственного объекта не подходит для решения со списком объектов, т.к. для такого варианта нет поддержки со стороны языка, а без неё получается либо коряво, либо ненадёжно. Это, кстати, отличает синглтон от других шаблонов, которые не особенно привязаны к языку и реализуются в целом без костылей.
@homo-ergaster3 жыл бұрын
@@0imax Вот честно, на Java, С# и PHP какой-то существенной разницы в реализации не узрел. В каком языке будут проблемы со стандартной реализацией честно говоря не знаю.
@dzen12347 жыл бұрын
В DLLке в init() вызываешь getInstance. В Exeшке - делаешь класс для инициализации, и от него статический объект.Статики создаются перед main(). Вот и все проблемы с параллельным доступом к первому созданию синглтона в C++.
@0imax6 жыл бұрын
А без длл-ки никак? И что делать, если объектов не 1, а n? Когда объект один, я просто делаю его руками в самом начале мейна и не заморачиваюсь))
@kaynsolo6 жыл бұрын
Like!
@gen78917 жыл бұрын
Блин, почитай про синглтон мейрса на плюсах. Там тоже по принципу явы.
@0imax3 жыл бұрын
Он давно отошёл от плюсов, чтобы читать по ним что-то :) А учитывая, что лекция очень старая, неудивительно, что про синглтон Мейерса никто не знает.
@MiHunter888 жыл бұрын
А про SOLID хотя бы упоминание в курсе есть? Если нет, то почему?
@Das.Kleine.Krokodil Жыл бұрын
упоминание точно есть на последних минутах в "Шаблоны разработки. ООП и основы UML"
@voxdevis90805 ай бұрын
а сам плейлист я чего-то не нашел
@syracuse4612 Жыл бұрын
php 8😎😎😎
@cheekibreeki93154 жыл бұрын
32:32
@ВикторГиль-ф2ф9 жыл бұрын
Интересно. Правда когда я начинал программировать, паттернов еще не было. Мне кажется паттерны это следствие другого принципа. По статистике, любая исполняемая программа 70% времени выполнения ( и более) тратит на перемещение данных и менее 30% на вычисление. Отсюда следует полный запрет на дублирование обрабатываемой информации (а за конструкторы копирования вообще надо руки и ноги отрывать имхо). Насколько я помню, вывод лога в один файл из разных потоков приводит к искусственной синхронизации и блокировке выполнения. Как вариант, порождающий поток должен создавать лог-объект для каждого потока со своим лог-файлом а каждую запись дополнять системным временем чтобы потом обеспечить возможность определения очередности. В противном случае, можно при изменении уровня отладки получить крах системы из за исчезновения лог-синхронизации в методах. Хотя в Java и так полно скрытых блокировок, которые приводят к низкой производительности на многоядерных системах.
@ВикторГиль-ф2ф9 жыл бұрын
***** Преждевременной оптимизации при отсутствии дублирования данных не бывает, по определению - это и есть максимальная оптимизация. Про красоту решений - у вас колени в ногах гнутся только в одну сторону или назад тоже? А ведь если бы они гнулись во все стороны то гибкость была намного больше. Также и в программировании - гибкость нужна только там, где она необходима (чтобы не дублировать данные и алгоритмы которые тоже информация). Лишняя гибкость = уродство и отсеивается эволюцией имхо.
@ВикторГиль-ф2ф9 жыл бұрын
***** Послушаю обязательно, спасибо. Просто у вас есть фраза, что программист определяет сам какой паттерн применить. Мне же кажется, что применить можно только тот, который соответствует входным данным. Если не знаешь, какой паттерн применить - пытай постановщика задачи, он дал слишком мало входной информации.
@ВикторГиль-ф2ф9 жыл бұрын
***** Входная информация является определяющей в программировании. ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C Классы, шаблоны хороши только для человека. Они существуют только в вашем воображении т.к. после компилятора, для компьютера выполняющего вашу программу, классов не существует . Своего рода попытка заставить плохих программистов писать оптимальный код (довольно плохая). Раньше проекты (процедурное программирование) всегда давали какой-то результат. Сейчас, благодаря классам и шаблонам ( и паттернам) проекты умирают на стадии разработки. Возьмите операционные системы ( достаточно сложные программы). Нет ни одной операционной системы, написанной с помощью ООП. Как вы думаете почему?
@MrBilbotronic9 жыл бұрын
Извини конечно, но ты ничерта не понимаешь в паттернах, да и судя по твоим размышлениям - в прогаммировании тоже.
@MrBilbotronic9 жыл бұрын
+Виктор Гиль это старый подход, до появления ООП, и это относится к функцинальному программированию. Виктор вы отстали в технологиях.
@thegod35008 жыл бұрын
Эта проблема фигня. Есть не одно решение для с++11 и выше