Boss: My wife is cheating on me Programmer: One man's constant is another man's variable....
@ChristopherOkhravi5 жыл бұрын
🤣🤣
@ionichi4 жыл бұрын
'The Variable Man' - by Philip K. Dick
@sourabhkhandelwal6894 жыл бұрын
Is this lose?
@bazejtez66354 жыл бұрын
once a variable, always a variable :D
@renarsdilevka65734 жыл бұрын
@@bazejtez6635 Unless you garbage collected :D
@mohammadnaseri50457 жыл бұрын
One of the best series I have ever watched. Keep going on dude!
@ChristopherOkhravi7 жыл бұрын
mohammad naseri thank you for the kind words. I'm glad it's useful :)
@IamCagedAnimal6 жыл бұрын
U, my good Sir are born for teaching, really nice and simple explanation for everyone to understand. Keep up the good job! cheers
@Tapuck7 жыл бұрын
Your editing is absolutely fantastic. The stream of knowledge never stops or slows down.
@dalitsobotha79324 жыл бұрын
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.
@mikhailbisserov7 жыл бұрын
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(); } } }
@GohersWay4 жыл бұрын
Sorry for asking such a newb question but what is purpose of locking here.
@mikhailbisserov4 жыл бұрын
@@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_videos2 жыл бұрын
@@mikhailbisserov 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)
@mikhailbisserov2 жыл бұрын
@@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.
@SaurabhGuptaicecool4 жыл бұрын
This series is greatest I've ever encountered on youtube on any topic, period.
@coorfang4264 жыл бұрын
Same here
@aniketb20106 жыл бұрын
“One man’s constant is another man’s variable”... Woow!!
@karzo2224 жыл бұрын
You are criminally underrated. Deserves more followers. Top notch.
@hoelefouk5 жыл бұрын
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!
@jaycelila62587 жыл бұрын
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.
@ruvishkarathnayake91255 жыл бұрын
The way you teach these lessons is perfect. This is a good example for my lecturers how to teach these stuff.
@vineetherenj31434 жыл бұрын
Me: Let me learn about Singleton pattern. Christopher: never use singleton pattern. Me: -_-
@eugeneganshin29343 жыл бұрын
You can use it tho. In Typescript Nestjs Framework alsmost every class is a singleton and its fine.
@PeterFlemmingNielsen3 жыл бұрын
You should never use it, except when you should. (eg. it is good to prevent database connection leaks)
@AlonGvili3 жыл бұрын
@@eugeneganshin2934 so like redux store is a singleton in a javascript/react world ?
@sammclaren6965 Жыл бұрын
That's what I call 'in-depth explanation'! Awesome work.
@sibinM113 жыл бұрын
this guy and explanation is pure gem
@ckmedia61205 жыл бұрын
This is why I love the internet, good videos with good info. My man!
@oussamaml41616 жыл бұрын
i got a UML exam tomorrow , and i've been watching your video , your videos are saving my life right now
@CognitiveSurge7 жыл бұрын
Love these videos, thanks Christopher! The Head First series is great.
@ChristopherOkhravi7 жыл бұрын
Karl Hadwen thanks! I'm very glad they're useful. Thanks for watching :)
@timothyjohns87756 жыл бұрын
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 Жыл бұрын
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 Жыл бұрын
@@yoavmor9002 It's not a pointer, so they did not mean that.
@gurituna7 жыл бұрын
Excellent i have a java architecture certificate exam within 3 months. You made me clear with the design pattern. Many thanks. Bless you
@ChristopherOkhravi7 жыл бұрын
+gokhan tuncel I'm glad to hear. Thank you very much for sharing and best of luck on the exam :)
@rusiraliyanage66434 жыл бұрын
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 :)
@DAS-jk3mw2 жыл бұрын
This is the best explanation of a Singleton pattern ever !!
@clementtytube3 жыл бұрын
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
@prapulkrishna4 жыл бұрын
You are one of the best teachers on the planet. Thanks for the videos.
@kirubababu71274 жыл бұрын
The way you teach is fantastic, you are my inspiration.
@seguncodes31363 жыл бұрын
The best explanation of Singleton pattern i have come across
@sushantkumar18453 жыл бұрын
The best playlist (on IT/Sw) I have ever watched on KZbin
@ariaien86375 жыл бұрын
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!
@ShobhaMahadev-x5y11 ай бұрын
A clear video on single ton design pattern. Thank you.
@vyaasshenoy18846 жыл бұрын
Your explanation is clear and precise. I enjoyed the video and was able to understand the nuances of this pattern very well.
@sarahlee69762 жыл бұрын
BEST VIDEO EVER!!!!! So much better than university lectures
@lyusienlozanov16327 жыл бұрын
Everything makes sense with that kind of explanation! Thanks, Chris!
@ChristopherOkhravi7 жыл бұрын
Thank you for the very kind words. Much appreciated and I'm glad to hear it. Thanks for watching :)
@gavinmcgregor32197 жыл бұрын
Just wanted to let you know that you are amazing for making this series!
@ChristopherOkhravi7 жыл бұрын
Thank you. You peeps are amazing for watching it :D
@johnyjohnjohny80147 жыл бұрын
This is quality man. Keep the good work, youtube definitly needs that. Well done
@ChristopherOkhravi7 жыл бұрын
+JohnyJohn Johny Thanks! And thanks for watching :)
@luli8297 жыл бұрын
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
@gg4eva7633 жыл бұрын
Oh my god, you are a good explainer! I'm actually understanding what's happening
@jvsnyc3 жыл бұрын
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...
@AVBFANS7 жыл бұрын
great video. finally I found explanation in a style that I can understand clearly. Thanks for the lesson. I am now a subscriber.
@ChristopherOkhravi7 жыл бұрын
+AVBFANS Awesome! Welcome to the channel :) And thank you for sharing your thoughts :)
@N1ghtR1der6664 жыл бұрын
definitely a very simple to understand explanation, thank you. I would as "a novice" suggest there are legitimate uses for singletons in game development.
@PatrickMagToast2 жыл бұрын
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.
@pervanadurdyyeva19203 жыл бұрын
Simplest and clear explanation I've come across. Thanks
@glenndify17 жыл бұрын
you have really simplified design patterns ... classic explaination ... thank you very much
@ChristopherOkhravi7 жыл бұрын
+Glenn Dsilva Thanks for letting me know! :) And thanks for watching!
@thomas29576 жыл бұрын
You're views must really go up every December/January. Exams time and your explanations are great, thanks man
@slobodanmikaric21807 жыл бұрын
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!
@Wwise_sounds2 жыл бұрын
SNHU is using this video as material reference. you should feel proud that an university is using your videos to teach new students :)
@kensearle4892 Жыл бұрын
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.
@IntelliAbb7 жыл бұрын
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 :)
@rustemduran42482 жыл бұрын
NIce man, totally grasped for the first time, thank you so much.
@Death8ball7 жыл бұрын
Fantastic series. When I get my first dev job I will do what I can to support you.
@uzil246 жыл бұрын
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.
@VaibhavJain5 жыл бұрын
Liked the way you describe different aspects of decision making and assumptions related to pattern
@mehakjain53847 жыл бұрын
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
@ChristopherOkhravi7 жыл бұрын
Thanks! I'm glad to hear that the style works :) Thank you for the encouragement and for watching the series :)
@emskiee53305 жыл бұрын
I love Singleton in Unity. Very handy for Manager objects.
@TheLucausi4 жыл бұрын
It could become your worse nightmare xD
@emskiee53304 жыл бұрын
@@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
@liveyounganastasia Жыл бұрын
I love how you explained this. Very clear. 👏
@exoticcoder53653 жыл бұрын
Gooooooooood one !!!! Very clear ! Clear all my concepts !
@miguelangelocano9918Ай бұрын
@Christopher Okhravi, what about spring singletons? Feature: Thread Safety Manual Singleton: Must ensure explicitly (e.g., static inner). Spring Singleton: Handled automatically by Spring. Feature: Ease of Use Manual Singleton: Requires boilerplate code. Spring Singleton: Simpler and more declarative. Feature: Testability Manual Singleton: Hard to mock. Spring Singleton: Can inject mocks using DI in tests. Feature: Flexibility Manual Singleton: Hard to replace or extend. Spring Singleton: Can configure beans dynamically. Do you see it as avoidable and violating best practices and principles?
@heshamabood4723 жыл бұрын
Singleton pattern is useful in a situations like when need create a logger for the application, this case required only one instance to be instantiated and used by multiples modules
@EngSamieh3 жыл бұрын
In general, most HW devices don’t allow concurrent access, Singleton pattern is essential to provide the SW interface that encapsulates the protection for the HW device.
@kasunperera97006 жыл бұрын
thanks chrostoper the best video about singleton i ever watched
@DominikRoszkowski7 жыл бұрын
Thanks, your explanation was clear and convincing :)
@ChristopherOkhravi7 жыл бұрын
Dominik Roszkowski thanks for sharing and for watching :)
@cunami27 жыл бұрын
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)
@ChristopherOkhravi7 жыл бұрын
+cunami2 thank you very very much for sharing the video :) Increasing views and comments like yours are of course things that keep me going :) :)
@betterculture7 жыл бұрын
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.
@irshuck7 жыл бұрын
Woooow, Thanks christopher for this wonderful series. Your teaching style is awesome. waiting for other design patterns :)
@ChristopherOkhravi7 жыл бұрын
+Irshad ck Thank you. Makes me glad to hear. Next one is coming very soon. Thanks for watching :)
@m41kdevelops416 жыл бұрын
Great videos. I just have an opinion and feel free to correct me; I believe that the Singleton pattern could be used for things that we only need one of such as database connections for example. So throughout the application's run-time, I don't think we'll need to change or re-establish the connection to the database we're using ( unless it is necessary for some reason of course ) so I think it's best to only allow one instance of the db connection class and each time we request an instance ( potentially a new connection ) we just send the existing connection back. please feel free to correct me if i'm wrong.
@houidimohamedamin47472 жыл бұрын
but don't you use different databases for dev and testing ?
@ZenMonkIlya4 жыл бұрын
Very informative! Thank you very much for this fantastic explanation, and for presenting it in such a good-natured way!
@lindawisebear4 жыл бұрын
It was really helpful that you went through the code in this video; great series! :)
@naffiahanger93163 жыл бұрын
Your explanation of concepts are easy to understand 👏👏👏👏👏
@adityashekhar8417 жыл бұрын
awesome, its like a savior if you exams in next couple of hours.
@mhshbht127 жыл бұрын
very good explanation of Singleton. Thanks Christopher
@abhishekpawar845811 ай бұрын
Thanks for this amazing video. One correction I would suggest is to make the static getInstance method synchronized. In the world of multi-threading, if two threads access the getInstance method, they will end up with 2 different instances
@Metachief_X5 жыл бұрын
god bless you, christopher. Please keep making videos!!
@MrTrik155 жыл бұрын
Clear, audible video. Keep it up
@sumitkapadia15097 жыл бұрын
The way you jump entered, I expect to hear "Hey Vsauce" :P . Awesome video.
@mayankgupta42437 жыл бұрын
Thanks Christopher really your explanation is very good
@praveennampelly35593 жыл бұрын
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.
@rajeshrathod93297 жыл бұрын
Very nice and detailed explanation of design pattern concepts.... I am waiting for other remaining design patterns videos ..... Thank you very much.
@gargkapil7 жыл бұрын
Hey Christopher it was a nice video but i have couple of question please try to answer them whenever you get time.. 1. what is the main difference between singleton and static class about which developer usually don't know. 2. Under which scenario we should use static class and when should we use singleton pattern. 3. if i have a abstract class having all abstract method and I have an interface, then which one i should choose and why?? I have couple of more questions which i ask you once i will get the clean and deepest answer of these question.
@priyankmungra293 жыл бұрын
Thank you for making this series ❤❤❤
@mark71664 жыл бұрын
One valid reason you might want to use a singleton would be in an app where a lot of lookup data is shared throughout. It makes sense to have a single instance of a class which loads the data once the first time it's needed, and then makes it available in all subsequent places without having to make another call to the database. Other than that, there certainly doesn't seem to be many reasons you'd want something like this.
@johanbln3 жыл бұрын
Super video! I will never forget what is a Singleton :-)
@radekp98517 жыл бұрын
if one is a religious fanatic and assembles a God class, singleton pattern seems like an obvious choice :)
@ChristopherOkhravi7 жыл бұрын
+Radek P This comment is quite simply hilarious :D :D
@pradeeph20007 жыл бұрын
Radek P LOL!!! For Indian Hindu fanatic it's probably a fly weight pattern with millions of fly weights
@timmyers97986 жыл бұрын
Unless you have more than one god, then you have to refactor the whole universe.
@Quynn-Oneal6 жыл бұрын
have you ever heard about Polytheism?
@uzil246 жыл бұрын
don't you mean polymorphism? ;-)
@MultiAkash19884 жыл бұрын
Love u sir, U make design pattern so easy
@taki5baj4 жыл бұрын
As I saw your video I get the feeling that I never ever understood clearly the Singleton design pattern. Your video catched me like 'Yeah, this stuff doesn't do much more than a static class.' Then my brain went on fire, I started thinking about this. Then I came up with a 'reason': A static class's constructor (type initializer) can't have any parameters in it's constructor. Singleton pattern can have any parameters, that the constructor might need in the getInstance() method. 1: Simply initialize an object, with the given parameters 2: Simply override the fields to the parameters. The only use-case with a Singleton pattern I can think of is like focus on a UI element (or GameObject if we are talking about a game). Just pass the object as a parameter and the singleton might change the color of the passed object to red, so only the element will be in focus. Sorry if this is wrong, I'm still a beginner in programming. C# example: public interface IFocusable { Color ObjectColor{get;set}; } public class Button : IFocusable { public Color ObjectColor{get;set;} public Button(){.....} } public class FocusSingleton { public static FocusSingleton instance; private IFocusable focusObject; private Color oldColor; private FocusSingleton(IFocusable objectToBeInFocus) { focusObject = objectToBeInFocus; oldColor = objectToBeInFocus.ObjectColor; objectToBeInFocus.ObjectColor = Color.Red; } public static FocusSingleton getInstance(IFocusable newObject){ if(instance == null) instance = new FocusSingleton(newObject); else{ focusObject.Color = oldColor; oldColor = newObject.ObjectColor; newObject.ObjectColor = Color.Red; } return instance; } } If this would be done with a static class, then we should check @ every object dependent method if the focusObject is null. With Singleton the checkings are eliminated.
@always90s7 жыл бұрын
Thanks Christopher! I will definitely check out those links. On to the next pattern :)
@ChristopherOkhravi7 жыл бұрын
Hitesh Rana cool! They're worth the time. Misko seems like a very smart guy. Thanks for watching!
@sakshisharma70977 жыл бұрын
Dude ! am waiting for command design pattern :) you are awesome , i just love the way u make everything easier and understandable :)
@ChristopherOkhravi7 жыл бұрын
+sakshi sharma thanks! :) I'm glad you're following the series. Thanks for watching and for the comment.
@JohnDoe-ej6vm4 жыл бұрын
such a wonderful lecture . concept clear now.
@abedalrawas26567 жыл бұрын
These videos are so precious thank you!
@SantanPereira7 жыл бұрын
I have watched all your videos on Design Pattern, You rock!!! keep up the good work. :)
@zolisawelani93384 жыл бұрын
Super awesome mate. Clear explanation.
@egruper7 жыл бұрын
had to add - you are amazing! great vids once again Thank you.
@ОлегТокмачев-в9ц6 жыл бұрын
Thanks a lot! Very cool vivid explanations and examples! Thanks! Thanks! Thanks!
@kevinbenavides927 жыл бұрын
You are a great instructor. Keep it up please.
@stefanoforgiarini3396 жыл бұрын
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!
@sachinkainth95083 жыл бұрын
Very great video. Thank you for this. One thing that is missing is a discussion about a thread-safe version of the Singleton pattern using double check locking or some other mechanism to achieve thread-safety.
@xavmanisdabestest4 жыл бұрын
I think in a game manager would be the perfect time to use this pattern as you only ever have one instance of a video game so it could hold useful functionality there, but just like you said one mans constant is another mans variable.
@LavGupta087 жыл бұрын
thanks again Christopher. your videos are great
@ChristopherOkhravi7 жыл бұрын
Lav Gupta thanks! And thanks for keeping up the watching :)
@biswarup0777 жыл бұрын
Great video. One suggestion: if you would have included multi threaded environment that would have been great. In many interviews this is asked.
@radoslavangelov71936 жыл бұрын
Thanks for the really good video. I just found out these series and just cannot stop watching them! However, the Singleton is very used in languages like Ruby and Python. That's why I cannot agree it should be used nowhere. Maybe in Java and C it doesn't make a lot of sense but when you start understanding the meta programming in ruby for example, there is no way to not use the Singleton :)
@maheshgangadhar40556 жыл бұрын
Very good explanation.. really help for me..
@vinoddurge86007 жыл бұрын
Great Series...Thanks for making those video ... waiting for more videos.
@גלכהן-ו8ח7 жыл бұрын
That smile in the end. LOL Greate series ! Waiting for the next chapter!!
@ChristopherOkhravi7 жыл бұрын
:D :D
@yonishachar18874 жыл бұрын
בואנה יא ישראלי מה אתה עושה פה? אני הישראלי היחידי שמכיר אותו
@sshanzel4 жыл бұрын
This is actually useful on my end. Using .Net Core with its "appsettings.json" for Configuration, it is intuitive that it will never change throughout its life since you have to hard-code the changes on the file itself first. So i don't think it hurts to identify those items.