Тёмный

Singleton Pattern - Design Patterns (ep 6) 

Christopher Okhravi
Подписаться 156 тыс.
Просмотров 247 тыс.
50% 1

Video series on Design Patterns for Object Oriented Languages. This time we look at the Singleton Pattern.
💙 BUY MY BOOK:
leanpub.com/the-object-orient...
► The playlist
• Design Patterns in Obj...
► Head First: Design Patterns
geni.us/nlbA6
► Design Patterns: Elements of Reusable Object-Oriented Software
geni.us/PsXmo
► Clean Code Talks at Google, by Miško Hevery
• "The Clean Code Talks ...
• "The Clean Code Talks ...
• The Clean Code Talks -...
• The Clean Code Talks -...
• How to Write Clean, Te...
💪 Patreon Community
/ christopherokhravi
📚 Products I Recommend
geni.us/71ZXF

Опубликовано:

 

26 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 491   
@mphophantshang9087
@mphophantshang9087 5 лет назад
Boss: My wife is cheating on me Programmer: One man's constant is another man's variable....
@ChristopherOkhravi
@ChristopherOkhravi 4 года назад
🤣🤣
@ionichi
@ionichi 4 года назад
'The Variable Man' - by Philip K. Dick
@sourabhkhandelwal689
@sourabhkhandelwal689 4 года назад
Is this lose?
@bazejtez6635
@bazejtez6635 4 года назад
once a variable, always a variable :D
@renarsdilevka6573
@renarsdilevka6573 4 года назад
@@bazejtez6635 Unless you garbage collected :D
@mohammadnaseri5045
@mohammadnaseri5045 7 лет назад
One of the best series I have ever watched. Keep going on dude!
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
mohammad naseri thank you for the kind words. I'm glad it's useful :)
@vineetherenj3143
@vineetherenj3143 3 года назад
Me: Let me learn about Singleton pattern. Christopher: never use singleton pattern. Me: -_-
@eugeneganshin2934
@eugeneganshin2934 3 года назад
You can use it tho. In Typescript Nestjs Framework alsmost every class is a singleton and its fine.
@PeterFlemmingNielsen
@PeterFlemmingNielsen 2 года назад
You should never use it, except when you should. (eg. it is good to prevent database connection leaks)
@AlonGvili
@AlonGvili 2 года назад
@@eugeneganshin2934 so like redux store is a singleton in a javascript/react world ?
@Tapuck
@Tapuck 6 лет назад
Your editing is absolutely fantastic. The stream of knowledge never stops or slows down.
@IamCagedAnimal
@IamCagedAnimal 6 лет назад
U, my good Sir are born for teaching, really nice and simple explanation for everyone to understand. Keep up the good job! cheers
@ckmedia6120
@ckmedia6120 5 лет назад
This is why I love the internet, good videos with good info. My man!
@SaurabhGuptaicecool
@SaurabhGuptaicecool 4 года назад
This series is greatest I've ever encountered on youtube on any topic, period.
@coorfang426
@coorfang426 4 года назад
Same here
@hoelefouk
@hoelefouk 4 года назад
If there is anything comparable to your teaching skills, it's your skills to have amazing intros. Intro for this particular video is simply genius. Your intros are so underrated man!
@ruvishkarathnayake9125
@ruvishkarathnayake9125 5 лет назад
The way you teach these lessons is perfect. This is a good example for my lecturers how to teach these stuff.
@mikhailbisserov8017
@mikhailbisserov8017 6 лет назад
That's a good video. Especially the code smell part. I would add though that to ensure single instance you also need to wrap instance creation with lock (Monitor), because nowadays threads are used left and right. In fact, "double-checked locking" (that's a pattern) should be used if (instance == null) { lock (_lockObject) { if (instance == null) { instance = new Singleton(); } } }
@GohersWay
@GohersWay 3 года назад
Sorry for asking such a newb question but what is purpose of locking here.
@mikhailbisserov8017
@mikhailbisserov8017 3 года назад
@@GohersWay Locking prevents execution of the enclosed code by multiple threads. We want "instance = new Singleton()" execute only ONCE in entire process lifetime and for that we need to make sure that inner "if (instance == null)" is never evaluated SIMULTANEOUSLY (but theoretically it can happen more than once, if two threads happen to access the singleton instance for the FIRST time simultaneously). Now, why do we need outer "if (instance == null)" - because it's much cheaper than lock in terms of CPU. If a web application runs for 30 minutes before process recycling, then 99.9% of instance access cases by different threads will go no further than outer if, 0.09% will create monitor, wait on that monitor, and evaluate inner if, and 0.01% will actually execute inner if's enclosed code (instance = new Singleton).
@good_life_videos
@good_life_videos 2 года назад
@@mikhailbisserov8017 but even if two threads access that part of creating the object, why should it be a concern ? considering, first instantiation call is just necessary (but state will always be random, so hardly matters who creates it finally or been changed by some other threds at same time)
@mikhailbisserov8017
@mikhailbisserov8017 2 года назад
@@good_life_videos if two threads create instances of the object, it's not Singleton by definition. WHY we want to create it only once is an out-of-scope question. It's a given task, purpose of Singeton. Usually it's for performance and memory conservation, maybe even acquiring lock to some unique underlying resource, but again, it's out of scope.
@lyusienlozanov1632
@lyusienlozanov1632 6 лет назад
Everything makes sense with that kind of explanation! Thanks, Chris!
@ChristopherOkhravi
@ChristopherOkhravi 6 лет назад
Thank you for the very kind words. Much appreciated and I'm glad to hear it. Thanks for watching :)
@karzo222
@karzo222 3 года назад
You are criminally underrated. Deserves more followers. Top notch.
@aniketb2010
@aniketb2010 5 лет назад
“One man’s constant is another man’s variable”... Woow!!
@CognitiveSurge
@CognitiveSurge 7 лет назад
Love these videos, thanks Christopher! The Head First series is great.
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
Karl Hadwen thanks! I'm very glad they're useful. Thanks for watching :)
@jvsnyc
@jvsnyc 2 года назад
The Clean Code links are all great! Now, back to your videos! I wound up learning as much from this as any of your others in this playlist, thanks to the excellent links provided in the description. Singletons seem very convenient, until test-time...
@dalitsobotha7932
@dalitsobotha7932 4 года назад
I love the way you teach. Your explanations are thorough and the way you speak is very captivating. Straight to the point, you are not a time waster.
@sammclaren6965
@sammclaren6965 11 месяцев назад
That's what I call 'in-depth explanation'! Awesome work.
@ariaien8637
@ariaien8637 4 года назад
Singleton design pattern is simple, however, complicated! every line of the code was explained thoroughly and beautifully.. well done! One of the best videos ever for Singleton!
@uzil24
@uzil24 5 лет назад
Thank you for this video and all the rest. I really hope to find every single Design pattern explained by you in this play list.
@luli829
@luli829 7 лет назад
Already learned this in university and now planning to review again, my professor who teaches that course is very good, and your lecture is as good as the course I learned before ! Thank you so much ! Waiting for more
@prapulkrishna
@prapulkrishna 4 года назад
You are one of the best teachers on the planet. Thanks for the videos.
@vyaasshenoy1884
@vyaasshenoy1884 5 лет назад
Your explanation is clear and precise. I enjoyed the video and was able to understand the nuances of this pattern very well.
@kirubababu7127
@kirubababu7127 3 года назад
The way you teach is fantastic, you are my inspiration.
@sibinM11
@sibinM11 3 года назад
this guy and explanation is pure gem
@lindawisebear
@lindawisebear 4 года назад
It was really helpful that you went through the code in this video; great series! :)
@clementtytube
@clementtytube 2 года назад
First time seeing your videos... I give a 10000 likes for your cuts and edits. Your videos are full of info (no lags and time waste). That itself proves you value your trade.. Kudos
@jaycelila6258
@jaycelila6258 7 лет назад
don't understand why this video is not popular than it has to be. You are amazingly well explaining abstract concepts so dumb like me can understand. Thanks.
@ZenMonkIlya
@ZenMonkIlya 4 года назад
Very informative! Thank you very much for this fantastic explanation, and for presenting it in such a good-natured way!
@johnyjohnjohny8014
@johnyjohnjohny8014 7 лет назад
This is quality man. Keep the good work, youtube definitly needs that. Well done
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
+JohnyJohn Johny Thanks! And thanks for watching :)
@Death8ball
@Death8ball 7 лет назад
Fantastic series. When I get my first dev job I will do what I can to support you.
@liveyounganastasia
@liveyounganastasia Год назад
I love how you explained this. Very clear. 👏
@DAS-jk3mw
@DAS-jk3mw Год назад
This is the best explanation of a Singleton pattern ever !!
@abedalrawas2656
@abedalrawas2656 7 лет назад
These videos are so precious thank you!
@sumitkapadia1509
@sumitkapadia1509 6 лет назад
The way you jump entered, I expect to hear "Hey Vsauce" :P . Awesome video.
@timothyjohns8775
@timothyjohns8775 6 лет назад
Not sure about other languages, but in C++, the preferred approach to singletons is known as the Meyers Singleton (named after Scott Meyers who included it in his book Effective C++). The idea is to declare the variable within a method rather than as a member variable. This is thread safe, and it also allows you to skip the check to see whether or not the singleton exists. The code looks like this: class Singleton { private: Singleton() {} public: static Singleton& getInstance() { static Singleton instance; return instance; } };
@yoavmor9002
@yoavmor9002 Год назад
I don't think intra-method static variable magic exists in non C languages, I think it's mostly a C thing. By the way, I'm assuming you meant static Singleton instance = new Singleton()
@Remist0
@Remist0 Год назад
@@yoavmor9002 It's not a pointer, so they did not mean that.
@sushantkumar1845
@sushantkumar1845 3 года назад
The best playlist (on IT/Sw) I have ever watched on RU-vid
@thomas2957
@thomas2957 5 лет назад
You're views must really go up every December/January. Exams time and your explanations are great, thanks man
@gavinmcgregor3219
@gavinmcgregor3219 7 лет назад
Just wanted to let you know that you are amazing for making this series!
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
Thank you. You peeps are amazing for watching it :D
@DominikRoszkowski
@DominikRoszkowski 7 лет назад
Thanks, your explanation was clear and convincing :)
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
Dominik Roszkowski thanks for sharing and for watching :)
@priyankmungra29
@priyankmungra29 3 года назад
Thank you for making this series ❤❤❤
@seguncodes3136
@seguncodes3136 3 года назад
The best explanation of Singleton pattern i have come across
@IntelliAbb
@IntelliAbb 7 лет назад
As much as we try to avoid Singletons, we do run into scenarios where we have to use one. Specially when working with native Android using Java where for creating Fragments, we use a public Instance property to get access to it. These Instances are then held in memory for various operations done by the OS. Great series, keep it up :)
@pervanadurdyyeva1920
@pervanadurdyyeva1920 3 года назад
Simplest and clear explanation I've come across. Thanks
@AVBFANS
@AVBFANS 7 лет назад
great video. finally I found explanation in a style that I can understand clearly. Thanks for the lesson. I am now a subscriber.
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
+AVBFANS Awesome! Welcome to the channel :) And thank you for sharing your thoughts :)
@betterculture
@betterculture 6 лет назад
Great video! However, the argument is not that Singletons are necessarily bad except that they are misunderstood, often abused and can introduce unwanted side effects when used without proper thought -- a lot of frameworks use Singletons :D. For instance, I have this piece of (framework) code that manages all of my configurations (and of subsystems) and the construction of this object is really heavy and doesn't even lend itself to a prototype or flyweight. It is important that these bits of configuration happen only once at application startup. Instead, I hide my singleton configuration instance behind an abstraction and delegate the construction and life cycle to a DI / IOC container. In other words, users only have to depend on that abstraction e.g. IConfigurationManager etc. In addition, the one thing (or two) I think you're missing is the issue of potential race conditions or thread-safety in concurrent systems when handling stuff like this manually -- why it's important to use a good DI framework and instead depend on abstractions. Plus, it is your responsibility to ensure that your object is IMMUTABLE upon construction and member access is read-only.
@user-sh9bj8qz3j
@user-sh9bj8qz3j 6 месяцев назад
A clear video on single ton design pattern. Thank you.
@oussamaml4161
@oussamaml4161 6 лет назад
i got a UML exam tomorrow , and i've been watching your video , your videos are saving my life right now
@glenndify1
@glenndify1 7 лет назад
you have really simplified design patterns ... classic explaination ... thank you very much
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
+Glenn Dsilva Thanks for letting me know! :) And thanks for watching!
@SantanPereira
@SantanPereira 7 лет назад
I have watched all your videos on Design Pattern, You rock!!! keep up the good work. :)
@mehakjain5384
@mehakjain5384 6 лет назад
One of the best video series I have ever seen. Superb explanation. Quite like the way you do these videos in your own style. Keep up the good work. P.s. loved ur writing and honesty :P
@ChristopherOkhravi
@ChristopherOkhravi 6 лет назад
Thanks! I'm glad to hear that the style works :) Thank you for the encouragement and for watching the series :)
@rusiraliyanage6643
@rusiraliyanage6643 3 года назад
Hey SIr , I am Sri Lankan IT Undergraduate , you do explain these design patterns very well and Thank You So much. It was really helpful me to figure out the answers for the design patterns questions in our university :)
@irshuck
@irshuck 7 лет назад
Woooow, Thanks christopher for this wonderful series. Your teaching style is awesome. waiting for other design patterns :)
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
+Irshad ck Thank you. Makes me glad to hear. Next one is coming very soon. Thanks for watching :)
@always90s
@always90s 7 лет назад
Thanks Christopher! I will definitely check out those links. On to the next pattern :)
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
Hitesh Rana cool! They're worth the time. Misko seems like a very smart guy. Thanks for watching!
@MrTrik15
@MrTrik15 5 лет назад
Clear, audible video. Keep it up
@rajeshrathod9329
@rajeshrathod9329 7 лет назад
Very nice and detailed explanation of design pattern concepts.... I am waiting for other remaining design patterns videos ..... Thank you very much.
@rustemduran4248
@rustemduran4248 2 года назад
NIce man, totally grasped for the first time, thank you so much.
@zolisawelani9338
@zolisawelani9338 3 года назад
Super awesome mate. Clear explanation.
@user-qg8ku9gv1l
@user-qg8ku9gv1l 3 года назад
Super clear! Thanks Christopher!
@user-gb7cp5vz4q
@user-gb7cp5vz4q 5 лет назад
Thanks a lot! Very cool vivid explanations and examples! Thanks! Thanks! Thanks!
@Metachief_X
@Metachief_X 4 года назад
god bless you, christopher. Please keep making videos!!
@naffiahanger9316
@naffiahanger9316 2 года назад
Your explanation of concepts are easy to understand 👏👏👏👏👏
@LavGupta08
@LavGupta08 7 лет назад
thanks again Christopher. your videos are great
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
Lav Gupta thanks! And thanks for keeping up the watching :)
@egruper
@egruper 6 лет назад
had to add - you are amazing! great vids once again Thank you.
@gurituna
@gurituna 7 лет назад
Excellent i have a java architecture certificate exam within 3 months. You made me clear with the design pattern. Many thanks. Bless you
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
+gokhan tuncel I'm glad to hear. Thank you very much for sharing and best of luck on the exam :)
@exoticcoder5365
@exoticcoder5365 3 года назад
Gooooooooood one !!!! Very clear ! Clear all my concepts !
@JohnDoe-ej6vm
@JohnDoe-ej6vm 3 года назад
such a wonderful lecture . concept clear now.
@AngelFormica
@AngelFormica 6 лет назад
Excellent. easy to understand. Thank you.
@vinoddurge8600
@vinoddurge8600 7 лет назад
Great Series...Thanks for making those video ... waiting for more videos.
@kensearle4892
@kensearle4892 6 месяцев назад
Thank you! Good points. The only time I have used a Singleton is when I was developing my own small website, wanted a quick cache, and only needed to load the database once at application startup to save on Cloud Database DTU hits. The webpage did load faster using the Singleton as a cache. A static class also worked for this scenario and is a little more straightforward. Either was ok for this scenario because I only changed the data about once per month, could restart the application when I wanted, and didn't have sessioned users on the site yet. However, once I want to add/change data in the database and want to reset the cache without an app restart, it is a dead-end; so it is not practical for many business production scenarios. I was just looking at 5-6 ways to cache and those were the quickest but most limited.
@flereoussarg
@flereoussarg 6 лет назад
Dude I really love your videos! Keep up the great work :)
@gg4eva763
@gg4eva763 2 года назад
Oh my god, you are a good explainer! I'm actually understanding what's happening
@mayankgupta4243
@mayankgupta4243 7 лет назад
Thanks Christopher really your explanation is very good
@monjasonsteng7861
@monjasonsteng7861 4 месяца назад
This is perfect. Thank you so much.
@N1ghtR1der666
@N1ghtR1der666 3 года назад
definitely a very simple to understand explanation, thank you. I would as "a novice" suggest there are legitimate uses for singletons in game development.
@PatrickMagToast
@PatrickMagToast 2 года назад
Could you provide an example, now that you've grown another year? :D I mean ofc there are things like "auto-saves" you need only once, but would there be a need to access them globally? It prevents people from doing stupid things but at the same time allows them to do other stupid things.
@adibmakhoul7076
@adibmakhoul7076 6 лет назад
just subscribed ur channel ! love the way you teach !
@ChristopherOkhravi
@ChristopherOkhravi 6 лет назад
Thanks for the sub! Glad to have you onboard :)
@sakshisharma7097
@sakshisharma7097 7 лет назад
Dude ! am waiting for command design pattern :) you are awesome , i just love the way u make everything easier and understandable :)
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
+sakshi sharma thanks! :) I'm glad you're following the series. Thanks for watching and for the comment.
@kasunperera9700
@kasunperera9700 5 лет назад
thanks chrostoper the best video about singleton i ever watched
@sarahlee6976
@sarahlee6976 Год назад
BEST VIDEO EVER!!!!! So much better than university lectures
@kevinbenavides92
@kevinbenavides92 6 лет назад
You are a great instructor. Keep it up please.
@mhshbht12
@mhshbht12 7 лет назад
very good explanation of Singleton. Thanks Christopher
@praveennampelly3559
@praveennampelly3559 2 года назад
Superb man, you explained very well. I really got lot of interest on design patterns. Thank you so much I leant a lot from your video's.
@pw.70
@pw.70 Год назад
Brilliant work - thank-you.
@VaibhavJain
@VaibhavJain 4 года назад
Liked the way you describe different aspects of decision making and assumptions related to pattern
@user-xs4gu6jd8m
@user-xs4gu6jd8m Год назад
That was great! thank you 🙌
@sitenepal7946
@sitenepal7946 7 лет назад
I was waiting for this one :) wow it's wonderful
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
avi fuel :D
@MultiAkash1988
@MultiAkash1988 4 года назад
Love u sir, U make design pattern so easy
@firstname32yearsago65
@firstname32yearsago65 6 лет назад
It’s very helpful, thanks
@Mari99Hamida
@Mari99Hamida Год назад
Clearly explained ! thank you .
@cunami2
@cunami2 7 лет назад
Amazing work on patterns, reading book is fine, but all those extra explanations are just making everithing perfectly fit in place. Wish you could finish rest of book till monday when i have test out of all patterns from book ^.^ Any way, keep it up (sharing videos with rest of Uni, everyone is gratefull)
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
+cunami2 thank you very very much for sharing the video :) Increasing views and comments like yours are of course things that keep me going :) :)
@aminebouita7185
@aminebouita7185 4 года назад
Best explanation, thanks a lot
@christianmelot3201
@christianmelot3201 3 года назад
Thank you for your videos !
@edudestroer
@edudestroer 3 месяца назад
Thank's for all the Knowledge🤜
@stefanoforgiarini339
@stefanoforgiarini339 6 лет назад
Excellent explanation Cristopher! Only one thing to note: what happens in a multi-threaded environment? It may happen that two different threads call the getInstance() method and because of this, more than one instance of the Singleton class is created. The only way to ensure a single instance is to add the synchronized in the getInstance method signature or (it would be better), synchronize the block of code in which we check if the instance is null (the if statement). Congrats for your videos!
@webb-developer
@webb-developer Год назад
this amazingly amazing , thankyou brother.
@slobodanmikaric2180
@slobodanmikaric2180 6 лет назад
Singleton can be used in notification servers for mobile devices or others, when you always have one and only one instance to call to add or remove observers. :) thx Christopher Okhravi for clearing this out!
@ndanh1
@ndanh1 6 лет назад
Thanks for the great video! Now I found one more interesting place to visit on youtube :)
@tivmego
@tivmego 7 лет назад
watching keenly!
@ChristopherOkhravi
@ChristopherOkhravi 7 лет назад
tivmego :D
@emskiee5330
@emskiee5330 5 лет назад
I love Singleton in Unity. Very handy for Manager objects.
@TheLucausi
@TheLucausi 4 года назад
It could become your worse nightmare xD
@emskiee5330
@emskiee5330 4 года назад
@@TheLucausi I've actually seen it unfold before me when the project I am working on became large. The Manager became this class with lots of states. Singleton, despite being great for Manager objects, should still be used sparingly :D
@ponnlaksmi2903
@ponnlaksmi2903 4 года назад
Explained well thanks buddy 😊
@maheshgangadhar4055
@maheshgangadhar4055 6 лет назад
Very good explanation.. really help for me..
Далее
Command Pattern - Design Patterns (ep 7)
39:12
Просмотров 266 тыс.
Adapter Pattern - Design Patterns (ep 8)
26:36
Просмотров 240 тыс.
Старый Дим Димыч вернулся😱
00:16
The Only Time You Should Use Polymorphism
13:55
Просмотров 89 тыс.
Singleton Design Pattern in C# - Do it THAT way
13:15
Factory Method Pattern - Design Patterns (ep 4)
27:21
Просмотров 539 тыс.
Covariance and Contravariance
13:31
Просмотров 12 тыс.
Decorator Pattern - Design Patterns (ep 3)
54:35
Просмотров 478 тыс.