设计模式--单例模式
来源:互联网 发布:windows照片查看器重装 编辑:程序博客网 时间:2024/06/04 18:31
一、设计模式简介
个人觉得设计模式是一种思想,是长久以来开发者反复使用,多数人所认可、知晓的一种经过分类设计、代码设计的经验总结。使用设计模式的目的是为了提高代码的重用性,让代码更加容易被理解、提高代码的规范、保证程序的可靠性。
二、单例模式简介
单例模式是设计模式中最简单、最常用、最容易理解的一种设计模式。单例模式是程序中有且只有一个的文件,例如配置文件、工具类、日志等等。这些文件在一个程序中通常要保证有且只有一个,如果创造出多个实例,就会导致很多的问题。比如占用过多的资源,程序中的结果数据不统一等等问题;
三、懒汉模式和饿汉模式
单例模式中常见的两种模式包括懒汉模式和饿汉模式;解释、区别详见代码的注释
3.1:饿汉模式
package com.ck.singleton;/** * Created by cn_CK on 2017/12/15. * 饿汉模式:在创建类的时候,不管程序是否要使用到对应的实例,都会自动创建类的实例,方便调用; */public class Singleton_1 {// 1、创建一个类的私有的构造方法,确保外部方法中不能直接创建对象; private Singleton_1(){ }// 2、创建类的唯一实例,确保类中能且只能创建一个类的实例; private static Singleton_1 s1 = new Singleton_1();// 3、类中提供一个用于实例调用的方法,方便外部进行使用; public static Singleton_1 getSingleton(){ return s1; }}3.2:懒汉模式
package com.ck.singleton;/** * Created by cn_CK on 2017/12/15. * 懒汉模式:在创建类的时候,并不会直接创建类的实例,而是在外部程序需要使用类的实例的时候才会进行创建对应的实例, * 如果在程序进行调用实例时,该类已经创建过实例的话,就直接返回之前创建的实例,确保类中有且只有一个实例。 */public class Singleton_2 {// 1、创建私有的构造方法 private Singleton_2(){}// 2、声明一个类的实例,并不用直接创建类的实例; private static Singleton_2 s2;// 3、提供外部调用获取类的实现的一个接口; public static Singleton_2 getSingleton(){ if (s2 != null){//判断类中是否已经创建过实例 return s2; }else { return new Singleton_2(); } }}四、懒汉模式和饿汉模式的区别
从上面的代码中不难看出,在实现代码的时候,懒汉模式在类中只是声明了自己类中的实例,并没有给与它进行具体的实现;而饿汉模式在类中声明实例的时候,就已经直接给与这个实例进行了实现;由于两种模式的创建实例的时期不同,所以到导致了各自不同的特点,懒汉模式在加载类的时候速度比较快,但是在执行获取类中的对象的实例的时候就会相应的速度变缓慢,饿汉模式在加载类的时候速度比较慢,但是在执行获取类中对象的实例的时候,速度是很快的;在线程安全的方面他们也存在区别,懒汉模式是线程不安全的,而饿汉模式则是线程相对安全的。
(以上内容都是根据自我理解整理的,如果有错误或者不足的地方,欢迎各位大咖留言指教。3q~~~)
阅读全文
0 0
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- VS2012配置astyle格式化代码
- ASP.NET中验证控件的使用
- springcloud
- BZOJ 5108 可做题 贪心,分段,异或拆位
- 毛哥的快乐生活 第二章 毛哥的学生时代
- 设计模式--单例模式
- javascript实现tab切换效果
- 认识Android中drawable与bitmap
- urllib2.HTTPError: HTTP Error 504: Fiddler
- 博客搬家
- [LUOGU1001] A+B Problem
- SQL新函数, 排名函数
- 网络原理学习笔记--基本概念1
- [洪流学堂]Hololens开发高级篇4:立体音效(Spatial sound)