`

Head First Design Pattern - 5 - This week's interview: Confe

阅读更多
HeadFirst: Today we are pleased to bring you an interview with a Singleton object. Why don’t you begin by telling us a bit about yourself?
Singleton: Well, I’m totally unique; there is just one of me!
HeadFirst: One?
Singleton: Yes, one. I’m based on the Singleton Pattern, which assures that at any one time there is only one instance of me.
HeadFirst: Isn’t that sort of a waste? Someone took the time to develop a full-blown class and now all we can get is one object out of it?
Singleton: Not at all! There is power in ONE. Let’s say you have an object that contains registry settings. You don’t want multiple copies of that object and its values running around – that would lead to chaos. By using an object like me you can assure that every object in your application is making use of the same global resource.
HeadFirst: Tell us more…
Singleton: Oh, I’m good for all kinds of things. Being single sometimes has its advantages you know. I’m often used to manage pools of resources, like connection or thread pools.
HeadFirst: Still, only one of your kind? That sounds lonely.
Singleton: Because there’s only one of me, I do keep busy, but it would be nice if more developers knew me – many developers run into bugs because they have multiple copies of objects floating around they’re not even aware of.
HeadFirst: So, if we may ask, how do you know there is only one of you? Can’t anyone with a new operator create a “new you”?
Singleton: Nope! I’m truly unique.
HeadFirst: Well, do developers swear an oath not to instantiate you more than once?
Singleton: That’s right. My constructor is declared private.
HeadFirst: How does that work? How do you EVER get instantiated?
Singleton: You see, to get a hold of a Singleton object, you don’t instantiate one, you just ask for an instance. So my class has a static method called getInstance(). Call that, and I’ll show up at once, ready to work. In fact, I may already be helping other objects when you request me.
HeadFirst: Well, Mr. Singleton, there seems to be a lot under your covers to make all this work. Thanks for revealing yourself and we hope to speak with you again soon!
分享到:
评论

相关推荐

    swift-boilerplate:在Tiknil的iOS上Swift创建的样板

    iOS快速样板 应用程序在iOS应用程序中以快速方式实现架构,并在MVVM中使用Swinject和RxSwift。 入门 在样例文件中添加Rubygen.rb,在新对象上创建永久性副本,在每个样例中都添加了示例... -f Forza gli input di confe

    ApiRTC-examples:有关如何使用ApiRTC Js的各种示例

    ApiRTC 该存储库包含用于将ApiRTC集成到Web应用程序中的实时通信的示例。 ApiRTC是WebRTC PaaS(平台即服务),可简化开发人员对WebRTC技术的访问。 使用我们的API,只需几行代码即可向您的网站和移动应用... Confe

    Conference Calendar

    Conference Calendar CONFERENCE CALENDAR Conference Calendar International Gene Therapy Meetings 2001 ...Gene Vector Production Network Conference October 4–5, Genocentre, Evry, France... Siebens Confe

    会议日历

    Conference Calendar CONFERENCE CALENDAR Conference Calendar International Gene Therapy Meetings 2001 ...Gene Vector Production Network Conference October 4–5, Genocentre, Evry, France... Siebens Confe

    deepMOT:如何训练您的深度多对象跟踪器的官方实施

    CVPR2020:如何训练您的深度多对象跟踪器 新闻... Yihong and Osep, Aljosa and Ban, Yutong and Horaud, Radu and Leal-Taix{\'e}, Laura and Alameda-Pineda, Xavier}, booktitle={Proceedings of the IEEE/CVF Confe

    snn_angular_velocity:尖峰网络的基于事件的角速度回归

    尖峰网络的基于事件的角速度回归 这是Mathias Gehrig,Sumit Bam Shrestha,Daniel Mouritzen和的论文《基于事件的带有尖峰网络的角速度回归》的代码。... journal = { {IEEE} International Confe

    在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程

    5. 现在输入 `:so $MYVIMRC` 或 `:source ~/.vimrc`,这将从当前的 `.vimrc` 文件加载新的设置,无需重启 Vim。 为了让这个过程更便捷,你可以为编辑和重载 `.vimrc` 创建快捷键映射。在你的 `.vimrc` 文件中添加...

    DETAD:诊断时间动作检测器中的错误(ECCV 2018)

    诊断时间动作检测器(DETAD)中的错误该存储库旨在承载用于分析时间动作本地化算法的诊断工具。 它包括三个分析:假阳性分析,定位度量敏感性分析和假... Victor and Ghanem, Bernard}, booktitle={The European Confe

    pygeo:pyGeo为MACH框架提供了曲面生成,FFD和几何约束

    pyGeo pyGeo是面向对象的几何处理框架,用于多学科设计优化。 它提供了基于自由变形(FFD)的几何处理对象,与NASA的Vehicle Sketch Pad几何引擎的接口,简单的几何约束公式化对象以及一些用于几何处理的实用... @confe

Global site tag (gtag.js) - Google Analytics