Шаблоны Java. Singleton (Одиночка)

  Рет қаралды 53,456

Eugene Suleimanov

Eugene Suleimanov

8 жыл бұрын

Пікірлер: 70
@AnnaIsHere
@AnnaIsHere 3 жыл бұрын
Очень структурированно, мне понравилось. Видно, что человек готовился. А то некоторые снимают так, будто на ходу придумывают.
@sorfolr4489
@sorfolr4489 Жыл бұрын
Улыбнул пример использования: Синглтон нужен для создания только одного экземпляра класса. Пример использования - нам необходимо создать только один экземпляр класса)) "Вы можете надеть трусы поверх шубы. Пример использования - вам нужно надеть трусы поверх шубы" ps: это всё шутки. автор отлично подает инфу, много узнал из этого и других видео
@cusxy
@cusxy 3 жыл бұрын
Спасибо, очень просто и понятно
@Andrzej3935
@Andrzej3935 Жыл бұрын
Категорически благодарю!
@immortal-spirit-13
@immortal-spirit-13 4 жыл бұрын
супер , хорошее объяснение в целом) спасибо ) но не до конца понял его суть и для чего он )
@user-cs4dl3kk8r
@user-cs4dl3kk8r 2 жыл бұрын
Спасибо вам огромное
@Witcher-simple-YouTube
@Witcher-simple-YouTube 2 жыл бұрын
Просто Мега супер огонь чотко)
@nikolayshavrin7093
@nikolayshavrin7093 3 ай бұрын
Спасибо)
@crashoverride9681
@crashoverride9681 7 жыл бұрын
Спасибо! Блин вчера только на тесте завалился с примером как в 20 строке кода, где надо было использовать += к String =)) Думал так нельзя со строками делать в Java =)))
@denissimo944
@denissimo944 2 жыл бұрын
Голос на Коляна из реальных пацанов похож)
@azerphoenix
@azerphoenix 3 жыл бұрын
Спасибо за видео! Кстати, можно было бы дополнить его такими понятиями, как Multiton, MonoState, Singleton Lazy Init, Singleton Thread Safety и про особенности обхода паттерна синглтон используя рефлексию или сериализацию.
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Спавсибо за отзыв! Да, вы правы, в этом видео рассмотрена только базовая реализация.
@fara0n333
@fara0n333 4 жыл бұрын
Только что защитил курсовую по ООП. Испоьзовал твой пример) Спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Поздравляю! Хорошо, что материал оказался полезен:)
@RG-em1nh
@RG-em1nh 3 жыл бұрын
Евгений, как всегда хочу высказать Вам благодарность за Вашу проделанную работу. Мне это нужно было, сейчас пытаюсь Singleton + Сериализация использовать для чтение из и записи в CSV файлы + редакцию файла надо запилить методу...
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Спасибо за отзыв!
@user-nu3nq7fe3f
@user-nu3nq7fe3f 7 жыл бұрын
Восстановил аккаунт на ютубе, чтобы лайкнуть. Шикарные видео!
@EugeneSuleimanov
@EugeneSuleimanov 7 жыл бұрын
Спасибо. Этот комментарий сделал мой день :)
@user-cc9sn3bx4l
@user-cc9sn3bx4l 2 жыл бұрын
а тут не нужно метод записи синхронизировать, ведь объект один и тот же но потоки могут полезть в эту память одновременно....или я не так это понимаю? И считывание тоже - нужно подождать когда записываются данные, что-бы получить целостную строку?
@valeriyemelyanov9090
@valeriyemelyanov9090 3 жыл бұрын
в данной реализации Singleton-а для объявления переменной инстанса необходимо volatile
@steveromanchuk4966
@steveromanchuk4966 6 жыл бұрын
Отличный урок, кратко и без излишеств! Жаль два лайка поставить нельзя!)))
@Ilya_yarets
@Ilya_yarets 3 жыл бұрын
Евгений добавьте пожалуйста в описание к видео, описание из файла Singleton.txt, как и в других видео про патерны.
@simplechannel7859
@simplechannel7859 2 жыл бұрын
Почти настоящий потокобезопасный singleton
@Qnoize
@Qnoize 4 жыл бұрын
Для потокобезопасного синглтона надо + static переменную сделать volatile и syncronized делать не метод а блок и обрамить только создание экземпляра класса, и сделать повторную проверку на null
@user-tk7nh1jw3y
@user-tk7nh1jw3y 5 ай бұрын
Не обязательно, то как сделано тоже корректно работает.
@dimatarasiuk7842
@dimatarasiuk7842 7 жыл бұрын
Здравствуйте, а как Вы на 4-ой минуте быстро копируете строчки??)
@EugeneSuleimanov
@EugeneSuleimanov 7 жыл бұрын
Добрый день, Дмитрий. У меня ( по стандартным настройкам) -> СTRL + D.
@dimatarasiuk7842
@dimatarasiuk7842 7 жыл бұрын
А Вы можете сделать небольшое видео про юнит тесты? Как их делать, почему они очень нужная штука...
@MrTricksleR
@MrTricksleR Жыл бұрын
Спасибо за видос, очень доходчиво объясняется. Единственное, что не понятно, это зачем нам пустой конструктор. Пытался гуглить внятного ответа не нашёл, там пишут в основном про сериализацию объектов, что в данном шаблоне по определению не надо. Объясните пожалуйста кто-нибудь
@alexeypolegoshko
@alexeypolegoshko Жыл бұрын
конструктор приватный, нельзя его вызвать откуда-то и создать объект используя конструктор
@Pewspoon
@Pewspoon Жыл бұрын
Спасибо. Я нихрена не понял. Пересмотрю еще раз.
@ramz9564
@ramz9564 2 жыл бұрын
Можно ли реализовывать синглтон через статический класс?
@user-di6ow3ee1e
@user-di6ow3ee1e 2 ай бұрын
Да
@user-id4yz5ti2j
@user-id4yz5ti2j 7 жыл бұрын
а есть где-то коды шаблонов которые вы написали?
@EugeneSuleimanov
@EugeneSuleimanov 7 жыл бұрын
Добрый день, Александр. Вот ссылка на репозиторий github: github.com/proselytear/DesignPatterns
@user-id4yz5ti2j
@user-id4yz5ti2j 7 жыл бұрын
Спасибо больше
@alexsoft5260
@alexsoft5260 5 жыл бұрын
все хорошо, но вот эти удары по клавишам очень по ушам бьют, особенно если в наушниках - очень неприятно
@maxkatrenko8865
@maxkatrenko8865 2 жыл бұрын
А мне нравится
@elizabeta3054
@elizabeta3054 2 жыл бұрын
Зачем в методе GetProgrammLogger проверять programLogger на null если при обращении к методу GetProgrammLogger сначала будет инициализироваться поле programLogger и оно не будет null?
@elizabeta3054
@elizabeta3054 2 жыл бұрын
Зачем в методе GetProgrammLogger проверять programLogger на null если это сначала делает компилятор при первом обращении к методу? или не делает?
@ttampuom
@ttampuom 4 жыл бұрын
Не было ничего сказано про тот факт, что перечислимый тип является потокобезопасным синглтоном. Конструктор не был сделан приватным. В рамках рассмотренного примера можно было бы метод addLogInfo сделать статическим и внутри него первой строкой вызывать getProgramLogger, чтобы не перекладывать на клиента обязанность получать объект класса, если ему нужно выполнить всего одно конкретное действие (записать лог).
@ramz9564
@ramz9564 2 жыл бұрын
Конструктор приватный
@ttampuom
@ttampuom 2 жыл бұрын
@@ramz9564 Моя ошибка, невнимательность, вы правы.
@JGolt
@JGolt 2 жыл бұрын
Здравствуйте! Спасибо за видео. Но я бы кое-что поменял тут: Если делать synchronized метод, то сильно будет теряться производительность нашего приложения, ведь потоки буду ждать друг-друга. (Представим, что их 100+). Лучше всего сделать synchronized блок, в котором тоже проверяется условие: if (programLogger == null) { synchronized(ProgramLogger.class) { if ( programLogger == null) { programLogger = new ProgramLogger(); } } return programLogger; } Делаю двойную проверку для надежности работы программы.
@MakakaDushechka
@MakakaDushechka 5 жыл бұрын
Ни одного коммента, про то, что здесь есть косяк. Если не сделать метод addLogInfo синхронизированным, то возможно такое, что если 2 нити будут добавлять данные в logFile, то они будут неправильно добавляться (у меня так и происходит), ведь две нити по-очереди выполняют метод getProgramLogger(), но метод addLogInfo они могут выполнять одновременно, в основном так и получается. Нет претензий к автору, я понимаю, что не в этом смысл видео, просто странно, что никто не написал об этом, будто никто даже и не проверял, а так, чисто ради галочки посмотрели
@EugeneSuleimanov
@EugeneSuleimanov 5 жыл бұрын
Вы говорите о потокобезопасной реализации данного шаблона. Здесь попытка реализовать, классический шаблон. И вы абсолютно правы - в многопоточной среде - это не будет работать корректно.
@DagestanShop
@DagestanShop 4 жыл бұрын
на 3:11 он про это говорит же
@Chekist2008
@Chekist2008 4 жыл бұрын
@@DagestanShop не про это он говорит. Еще раз, пожалуйста, перечитайте комментарий от MakakaDushechka
@user-yw8kd4sc1f
@user-yw8kd4sc1f 3 жыл бұрын
Можливо у тебе є десь приклади патернів на GitHub?
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Да, конечно: github.com/proselytear/DesignPatterns
@user-yw8kd4sc1f
@user-yw8kd4sc1f 3 жыл бұрын
@@EugeneSuleimanov Дякую!)
@getteg6468
@getteg6468 4 жыл бұрын
запутался..
@vasylkushnir7567
@vasylkushnir7567 3 жыл бұрын
Привіт. Дякую за курс :) synchronized краще повішати тільки на ініціалізацію programLogger, тому що в данному прикладі потоки не зможуть використовувати паралельно метод getProgramLogger(). if (programLogger == null) { synchronized (ProgramLogger.class) { programLog = new ProgramLogger(); } }
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Спасибо за отзыв! Да, вы правы, спасибо за комментарий.
@vornamenachname9524
@vornamenachname9524 2 жыл бұрын
Автор видео конечно молодец, но до настоящих глубин ему еще далеко. Это не настоящий сингелтон, ибо второй экземпляр можно легко создать с помощью сериализации и последующей десериализации. Учите матчасть!
@user-id6mt9hz7r
@user-id6mt9hz7r 5 жыл бұрын
Зачем так сильно нажимать на Enter. По ушам пздц бьет
@EugeneSuleimanov
@EugeneSuleimanov 5 жыл бұрын
Показать собственное превосходство над клавиатурой. Тотальное доминирование...
@user-ei2vj8jv9u
@user-ei2vj8jv9u 3 жыл бұрын
Милые джуны! Большая просьба! Прежде чем реализовывать данный паттерн на практике - просите себя: "а не мудак ли я?". Дело в том, что данный паттерн многими считается АНТИ-паттерном как раз потому, что многие новички, поразившись крутости публичной точки доступа, начинают всю программу сводить к синглтонам, а это недопустимо, это грубейшее нарушение многих принципов и законов ООП программирования. Чаще всего, когда ваш внутренний голос говорит вам "о, это можно сделать синглтоном" - вы стреляете себе в ногу.
@javamessagemail4412
@javamessagemail4412 Жыл бұрын
Сеньор/windows-ты точно хочешь выстрелить себе в ногу?(отбирает пистолет). Внутренний голос джуна/linux-да ниче не будет, я ж не мудак какой-то(стреляет, пытается заклеить огнестрел пластырем).
@ololo2755
@ololo2755 2 ай бұрын
Для наглядности надо было в примерах получить экземпляр несколько раз, дилетантам не сразу понятно)
Шаблоны Java. Builder (Строитель)
10:58
Eugene Suleimanov
Рет қаралды 49 М.
Шаблоны Java. FactoryMethod (Фабричный метод)
12:22
Eugene Suleimanov
Рет қаралды 91 М.
Мама забыла взять трубочку для колы
00:25
Даша Боровик
Рет қаралды 2,2 МЛН
Шаблоны Java. AbstractFactory (Абcтрактная фабрика)
14:34
Шаблоны Java. Observer (Наблюдатель)
9:49
Eugene Suleimanov
Рет қаралды 26 М.
Шаблоны Java. Visitor (Посетитель)
9:54
Eugene Suleimanov
Рет қаралды 14 М.
Паттерн Singleton (Одиночка) в Python
36:55
Python Russian
Рет қаралды 10 М.
Шаблоны Java. Одиночка (Singleton)
31:02
Vladimir Vysokomornyi
Рет қаралды 18 М.
Шаблоны Java. Prototype (Прототип)
7:32
Eugene Suleimanov
Рет қаралды 29 М.