这是我参与新手入门的第2篇文章
前言
设计模式是前辈们对开发经验的总结,通过学习设计模式,可以帮助我们在开发过程中面临的一些开发问题,但是需要注意,设计模式是一种思想,是解决特定问题的一系列套路,它不是语法规则。本篇我们介绍单例模式。
定义
实现一个单例模式并不需要很复杂的代码,那么什么是单例模式呢?其实重点就在一个“单”字,也就是说只有一个,这个物体在世界中只存在一份,例如我们经常使用的visual studio,它的工具箱页面永远只有一个,不管我们从哪里选择打开它。如果它已经显示着,也并不会重复的打开。
其实单例的实现方式有两种,一种是饿汉式单例,另一种是懒汉式单例,我们先来分别讲一下它们的代码实现方式。(代码编写使用C#语言)
饿汉式单例
懒汉式单例
优缺点
从代码来看,这两种似乎并没有太大区别,只是实例化的时机不同,恰恰正是因为如此,两者的优缺点也就此显现出来了。饿汉式单例是在其被加载的时候进行实例化,优点是在于无须考虑多线程同时访问的问题,可以确保其唯一性。调用速度也要优于懒汉式单例,因为其在一开始就创建好了。但是资源利用效率来讲略逊于懒汉式单例。
改良
为了保证在多线程访问时的唯一性,我们需要针对懒汉式单例进行进一步的改良,代码如下:
代码调用
总结
单例模式的两种实现方式在代码调用上没有什么区别,主要区别在实例化时机与多线程调用上。其主要特征:
1、单例类只能有一个实例;
2、单例类必须自己创建自己的唯一实例;
3、单例类必须给所有其他对象提供这一实例;
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END