Очень структурированно, мне понравилось. Видно, что человек готовился. А то некоторые снимают так, будто на ходу придумывают.
@sorfolr4489 Жыл бұрын
Улыбнул пример использования: Синглтон нужен для создания только одного экземпляра класса. Пример использования - нам необходимо создать только один экземпляр класса)) "Вы можете надеть трусы поверх шубы. Пример использования - вам нужно надеть трусы поверх шубы" ps: это всё шутки. автор отлично подает инфу, много узнал из этого и других видео
@cusxy3 жыл бұрын
Спасибо, очень просто и понятно
@Andrzej3935 Жыл бұрын
Категорически благодарю!
@immortal-spirit-134 жыл бұрын
супер , хорошее объяснение в целом) спасибо ) но не до конца понял его суть и для чего он )
@user-cs4dl3kk8r2 жыл бұрын
Спасибо вам огромное
@Witcher-simple-YouTube2 жыл бұрын
Просто Мега супер огонь чотко)
@nikolayshavrin70933 ай бұрын
Спасибо)
@crashoverride96817 жыл бұрын
Спасибо! Блин вчера только на тесте завалился с примером как в 20 строке кода, где надо было использовать += к String =)) Думал так нельзя со строками делать в Java =)))
@denissimo9442 жыл бұрын
Голос на Коляна из реальных пацанов похож)
@azerphoenix3 жыл бұрын
Спасибо за видео! Кстати, можно было бы дополнить его такими понятиями, как Multiton, MonoState, Singleton Lazy Init, Singleton Thread Safety и про особенности обхода паттерна синглтон используя рефлексию или сериализацию.
@EugeneSuleimanov3 жыл бұрын
Спавсибо за отзыв! Да, вы правы, в этом видео рассмотрена только базовая реализация.
@fara0n3334 жыл бұрын
Только что защитил курсовую по ООП. Испоьзовал твой пример) Спасибо!
@EugeneSuleimanov4 жыл бұрын
Поздравляю! Хорошо, что материал оказался полезен:)
@RG-em1nh3 жыл бұрын
Евгений, как всегда хочу высказать Вам благодарность за Вашу проделанную работу. Мне это нужно было, сейчас пытаюсь Singleton + Сериализация использовать для чтение из и записи в CSV файлы + редакцию файла надо запилить методу...
@EugeneSuleimanov3 жыл бұрын
Спасибо за отзыв!
@user-nu3nq7fe3f7 жыл бұрын
Восстановил аккаунт на ютубе, чтобы лайкнуть. Шикарные видео!
@EugeneSuleimanov7 жыл бұрын
Спасибо. Этот комментарий сделал мой день :)
@user-cc9sn3bx4l2 жыл бұрын
а тут не нужно метод записи синхронизировать, ведь объект один и тот же но потоки могут полезть в эту память одновременно....или я не так это понимаю? И считывание тоже - нужно подождать когда записываются данные, что-бы получить целостную строку?
@valeriyemelyanov90903 жыл бұрын
в данной реализации Singleton-а для объявления переменной инстанса необходимо volatile
@steveromanchuk49666 жыл бұрын
Отличный урок, кратко и без излишеств! Жаль два лайка поставить нельзя!)))
@Ilya_yarets3 жыл бұрын
Евгений добавьте пожалуйста в описание к видео, описание из файла Singleton.txt, как и в других видео про патерны.
@simplechannel78592 жыл бұрын
Почти настоящий потокобезопасный singleton
@Qnoize4 жыл бұрын
Для потокобезопасного синглтона надо + static переменную сделать volatile и syncronized делать не метод а блок и обрамить только создание экземпляра класса, и сделать повторную проверку на null
@user-tk7nh1jw3y5 ай бұрын
Не обязательно, то как сделано тоже корректно работает.
@dimatarasiuk78427 жыл бұрын
Здравствуйте, а как Вы на 4-ой минуте быстро копируете строчки??)
@EugeneSuleimanov7 жыл бұрын
Добрый день, Дмитрий. У меня ( по стандартным настройкам) -> СTRL + D.
@dimatarasiuk78427 жыл бұрын
А Вы можете сделать небольшое видео про юнит тесты? Как их делать, почему они очень нужная штука...
@MrTricksleR Жыл бұрын
Спасибо за видос, очень доходчиво объясняется. Единственное, что не понятно, это зачем нам пустой конструктор. Пытался гуглить внятного ответа не нашёл, там пишут в основном про сериализацию объектов, что в данном шаблоне по определению не надо. Объясните пожалуйста кто-нибудь
@alexeypolegoshko Жыл бұрын
конструктор приватный, нельзя его вызвать откуда-то и создать объект используя конструктор
@Pewspoon Жыл бұрын
Спасибо. Я нихрена не понял. Пересмотрю еще раз.
@ramz95642 жыл бұрын
Можно ли реализовывать синглтон через статический класс?
@user-di6ow3ee1e2 ай бұрын
Да
@user-id4yz5ti2j7 жыл бұрын
а есть где-то коды шаблонов которые вы написали?
@EugeneSuleimanov7 жыл бұрын
Добрый день, Александр. Вот ссылка на репозиторий github: github.com/proselytear/DesignPatterns
@user-id4yz5ti2j7 жыл бұрын
Спасибо больше
@alexsoft52605 жыл бұрын
все хорошо, но вот эти удары по клавишам очень по ушам бьют, особенно если в наушниках - очень неприятно
@maxkatrenko88652 жыл бұрын
А мне нравится
@elizabeta30542 жыл бұрын
Зачем в методе GetProgrammLogger проверять programLogger на null если при обращении к методу GetProgrammLogger сначала будет инициализироваться поле programLogger и оно не будет null?
@elizabeta30542 жыл бұрын
Зачем в методе GetProgrammLogger проверять programLogger на null если это сначала делает компилятор при первом обращении к методу? или не делает?
@ttampuom4 жыл бұрын
Не было ничего сказано про тот факт, что перечислимый тип является потокобезопасным синглтоном. Конструктор не был сделан приватным. В рамках рассмотренного примера можно было бы метод addLogInfo сделать статическим и внутри него первой строкой вызывать getProgramLogger, чтобы не перекладывать на клиента обязанность получать объект класса, если ему нужно выполнить всего одно конкретное действие (записать лог).
@ramz95642 жыл бұрын
Конструктор приватный
@ttampuom2 жыл бұрын
@@ramz9564 Моя ошибка, невнимательность, вы правы.
@JGolt2 жыл бұрын
Здравствуйте! Спасибо за видео. Но я бы кое-что поменял тут: Если делать synchronized метод, то сильно будет теряться производительность нашего приложения, ведь потоки буду ждать друг-друга. (Представим, что их 100+). Лучше всего сделать synchronized блок, в котором тоже проверяется условие: if (programLogger == null) { synchronized(ProgramLogger.class) { if ( programLogger == null) { programLogger = new ProgramLogger(); } } return programLogger; } Делаю двойную проверку для надежности работы программы.
@MakakaDushechka5 жыл бұрын
Ни одного коммента, про то, что здесь есть косяк. Если не сделать метод addLogInfo синхронизированным, то возможно такое, что если 2 нити будут добавлять данные в logFile, то они будут неправильно добавляться (у меня так и происходит), ведь две нити по-очереди выполняют метод getProgramLogger(), но метод addLogInfo они могут выполнять одновременно, в основном так и получается. Нет претензий к автору, я понимаю, что не в этом смысл видео, просто странно, что никто не написал об этом, будто никто даже и не проверял, а так, чисто ради галочки посмотрели
@EugeneSuleimanov5 жыл бұрын
Вы говорите о потокобезопасной реализации данного шаблона. Здесь попытка реализовать, классический шаблон. И вы абсолютно правы - в многопоточной среде - это не будет работать корректно.
@DagestanShop4 жыл бұрын
на 3:11 он про это говорит же
@Chekist20084 жыл бұрын
@@DagestanShop не про это он говорит. Еще раз, пожалуйста, перечитайте комментарий от MakakaDushechka
@user-yw8kd4sc1f3 жыл бұрын
Можливо у тебе є десь приклади патернів на GitHub?
@EugeneSuleimanov3 жыл бұрын
Да, конечно: github.com/proselytear/DesignPatterns
@user-yw8kd4sc1f3 жыл бұрын
@@EugeneSuleimanov Дякую!)
@getteg64684 жыл бұрын
запутался..
@vasylkushnir75673 жыл бұрын
Привіт. Дякую за курс :) synchronized краще повішати тільки на ініціалізацію programLogger, тому що в данному прикладі потоки не зможуть використовувати паралельно метод getProgramLogger(). if (programLogger == null) { synchronized (ProgramLogger.class) { programLog = new ProgramLogger(); } }
@EugeneSuleimanov3 жыл бұрын
Спасибо за отзыв! Да, вы правы, спасибо за комментарий.
@vornamenachname95242 жыл бұрын
Автор видео конечно молодец, но до настоящих глубин ему еще далеко. Это не настоящий сингелтон, ибо второй экземпляр можно легко создать с помощью сериализации и последующей десериализации. Учите матчасть!
@user-id6mt9hz7r5 жыл бұрын
Зачем так сильно нажимать на Enter. По ушам пздц бьет
@EugeneSuleimanov5 жыл бұрын
Показать собственное превосходство над клавиатурой. Тотальное доминирование...
@user-ei2vj8jv9u3 жыл бұрын
Милые джуны! Большая просьба! Прежде чем реализовывать данный паттерн на практике - просите себя: "а не мудак ли я?". Дело в том, что данный паттерн многими считается АНТИ-паттерном как раз потому, что многие новички, поразившись крутости публичной точки доступа, начинают всю программу сводить к синглтонам, а это недопустимо, это грубейшее нарушение многих принципов и законов ООП программирования. Чаще всего, когда ваш внутренний голос говорит вам "о, это можно сделать синглтоном" - вы стреляете себе в ногу.
@javamessagemail4412 Жыл бұрын
Сеньор/windows-ты точно хочешь выстрелить себе в ногу?(отбирает пистолет). Внутренний голос джуна/linux-да ниче не будет, я ж не мудак какой-то(стреляет, пытается заклеить огнестрел пластырем).
@ololo27552 ай бұрын
Для наглядности надо было в примерах получить экземпляр несколько раз, дилетантам не сразу понятно)