博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式: Singleton 模式
阅读量:5810 次
发布时间:2019-06-18

本文共 1283 字,大约阅读时间需要 4 分钟。

问题

个人认为 Singleton 模式是设计模式中最为简单、最为常见、最容易实现,也是最应该熟悉和掌握的模式。且不说公司企业在招聘的时候为了考察员工对设计的了解和把握,考的最多的就是 Singleton 模式。

Singleton 模式解决问题十分常见,我们怎样去创建一个唯一的变量(对象?在基于对象的设计中我们可以通过创建一个全局变量(对象)来实现,在面向对象和面向过程结合的设计范式(如 C++中)中,我们也还是可以通过一个全局变量实现这一点。

但是当我们遇到了纯粹的面向对象范式中,这一点可能就只能是通过 Singleton 模式来实现了,可能这也正是很多公司在招聘 Java 开发人员时候经常考 Singleton 模式的缘故吧。 Singleton 模式在开发中非常有用,我们开发过程中一些变量必须是唯一的,比如说打印机的实例等等。

模式选择

单例模式

我们通过维护一个 static 的成员变量来记录这个唯一的对象实例。通过提供一个 staitc 的接口instance 来获得这个唯一的实例。Singleton模式经常和Factory(Abstract Factory)模式在一起使用,因为系统中工厂对象一般来说只要一个。

实现

//Singleton.h#ifndef __SINGLETON_H__#define __SINGLETON_H__class CSingleton{ public:     static CSingleton* Instance(); protected:     CSingleton(); private:     static CSingleton* _instance; }; #endif//Singleton.cpp#include "Singleton.h" #include 
CSingleton* CSingleton::_instance = NULL; CSingleton::CSingleton() { std::cout << "Singleton....\n"; } CSingleton* CSingleton::Instance(){ if (_instance == NULL) { _instance = new CSingleton(); } return _instance; }//main.cpp#include "Singleton.h"int main(){ CSingleton* pSingleton = CSingleton::Instance(); return 0;}

 

总结

Singleton模式看起来简单,其实上面的单例也是有问题的,比如非线程安全,这里有一篇文章讨论了Singleton模式的几种写法,有兴趣可以看看。

转载于:https://www.cnblogs.com/likebeta/archive/2013/04/01/2993364.html

你可能感兴趣的文章
[ThinkPHP]打开页面追踪调试
查看>>
Oracle建立表空间和用户
查看>>
Java设计模式
查看>>
Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)
查看>>
001_vagrant利器
查看>>
用Swagger生成接口文档
查看>>
sublime快捷键
查看>>
一文读懂 AOP | 你想要的最全面 AOP 方法探讨
查看>>
「Do.017」如何高效使用Win电脑?
查看>>
Android多线程+单线程+断点续传+进度条显示下载
查看>>
Spring中XML,注解,JavaConfig如何选择
查看>>
搭建JEESZ分布式架构1--CentOs下安装jdk7(环境准备)
查看>>
数据更新| Qtum 量子链全球大使招募计划
查看>>
分布式锁的解决方案(二)
查看>>
如何写出一个好的单例模式
查看>>
Python urllib HTTP头注入漏洞
查看>>
类的设计-使可变性最小
查看>>
三、Android性能优化之常见的内存泄漏分析
查看>>
决战性能之巅 - Taro H5 转换与优化升级
查看>>
iOS逆向之旅(进阶篇) — 代码注入
查看>>