在进行开发的时候,我们在有些情形下有些对象我们只需要一个。例如:配置文件、工具类、线程池、缓存、日志对象等。

  如何保证我们的对象只有一个呢?我们可以通过单例来实现。

  常用的单例有两种:饿汉模式和懒汉模式。

  饿汉模式:当类加载的时候就会创建这个单例对象。(加载比较慢,但是运行的时候会比较快,线程安全)

public class Singleton {
//1.将构造方法设置为私有,不允许外界直接实例化类的对象
private Singleton(){ } //2.创建一个私有的静态实例对象
private static Singleton instance = new Singleton(); //3.通过一个共有的静态方法获得实例对象
public static Singleton getInstance(){
return instance;
}
}

  懒汉模式:类加载的时候不会创建类的单例,只有第一次在调用getInstance()方法的时候,才会创建类的单例。(加载快,运行时第一次获取慢,非线程安全)

public class Singleton {
//1.将构造方法设置为私有,不允许外界直接实例化类的对象
private Singleton(){ } //2.声明一个类的唯一实例,使用private static修饰
private static Singleton instance; //3.通过一个共有的静态方法获得实例对象
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}

单例模式singleton的更多相关文章

  1. 设计模式之单例模式——Singleton

                        设计模式之单例模式--Singleton 设计意图: 保证类仅有一个实例,并且可以供应用程序全局使用.为了保证这一点,就需要这个类自己创建自己的对象,并且对外有 ...

  2. 【白话设计模式四】单例模式(Singleton)

    转自:https://my.oschina.net/xianggao/blog/616385 0 系列目录 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factor ...

  3. ooad单例模式-Singleton

                                                单例模式Singleton 主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 比如建立目录 ...

  4. iOS单例模式(Singleton)写法简析

    单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例: ...

  5. 浅谈设计模式--单例模式(Singleton Pattern)

    题外话:好久没写blog,做知识归纳整理了.本来设计模式就是个坑,各种文章也写烂了.不过,不是自己写的东西,缺少点知识的存在感.目前还没做到光看即能记住,得写.所以准备跳入设计模式这个大坑. 开篇先贡 ...

  6. 设计模式之——单例模式(Singleton)的常见应用场景

    单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此 ...

  7. 设计模式之单例模式(Singleton Pattern)

    单例模式 单例模式(Singleton Pattern)在java中算是最常用的设计模式之一,主要用于控制控制类实例的数量,防止外部实例化或者修改.单例模式在某些场景下可以提高系统运行效率.实现中的主 ...

  8. 设计模式(4) -- 单例模式(Singleton)

    设计模式(4)  -- 单例模式(Singleton) 试想一个读取配置文件的需求,创建完读取类后通过New一个类的实例来读取配置文件的内容,在系统运行期间,系统中会存在很多个该类的实例对象,也就是说 ...

  9. IOS单例模式(Singleton)

    IOS单例模式(Singleton)   单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模 ...

  10. java设计模式之 单例模式 Singleton

    static 的应用 单例模式 Singleton 单例:保证一个类在系统中最多只创建一个实例. 好处:由于过多创建对象实例,会产生过多的系统垃圾,需要GC频繁回收,由于GC会占用较大的系统资源,所有 ...

随机推荐

  1. MapReduce多重MR如何实现

    一.每次输出文件存在很烦人 // 判断output文件夹是否存在,如果存在则删除 Path path = new Path(otherArgs[1]);// 取第1个表示输出目录参数(第0个参数是输入 ...

  2. Fckeditor PHP/ASP File Upload Vul

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 FCKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScrip ...

  3. Java多线程实践

    1.实现Runnable接口 import java.util.Random; public class PrintTask implements Runnable{ private final in ...

  4. 【Alpha版本】冲刺-Day7

    队伍:606notconnected 会议时间:11月15日 会议总结 张斯巍(433) 今天安排:上传界面设计 完成度:95% 明天计划:回收站界面设计 遇到的问题:无 感想:从一开始界面风格就要确 ...

  5. linux下安装zookeeper(单机版)

    Zookeeper 分布式服务框架是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等.本文主要从使用者角度来介绍一下Zookeeper ...

  6. uC/OS-II配置文件

    /*************************************************************************************************** ...

  7. 把ISO文件加载到虚拟光驱

    1. 下载迅雷 2.  介绍一个下载微软产品的网站(I tell you),里面的下载程序都是破解好的罗.http://www.itellyou.cn/ 3.  在"I tell you&q ...

  8. ASP------<input type="file"/>上传文件

    界面代码(注意:runat="Server"和input file中name一定要有) <html xmlns="http://www.w3.org/1999/xh ...

  9. mysql循环获取结果集

    do { MYSQL_RES* res = mysql_store_result(con); ) { MYSQL_ROW row; if (row = mysql_fetch_row(res)) { ...

  10. Java数据结构——用双端链表实现队列

    //================================================= // File Name : LinkQueue_demo //---------------- ...