为什么需要单例?只因为国家的独生子女政策(当然现在可以生2个)

单例是一个很孤独的物种,因为它的类里面做多只有也仅只有它一个。

常见的是懒汉及饿汉模式,

1.懒汉,为什么这么叫,看看英文,原为lazy loading,lazy(懒惰的),laoding(音如同佬),叫懒佬,然后一个佬==一条汉子,为好听,故懒汉。

最基础的懒汉模式:

//单例模式
public class Singleton { // 私有化构造方法,使得外部不可能有由new产生实例;
private Singleton() {
} // 懒汉模式
private static Singleton instance = null;
//不加synchronized,线程有问题;
public static Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
} }

上面有线程安全的问题,如果多线程情况下,可以得出多个实例。

加入synchronized 改进后:

//单例模式
public class Singleton { // 私有化构造方法,使得外部不可能由用new产生实例;
private Singleton() {
} // 懒汉模式
private static Singleton instance = null;\
//不加synchronized,线程有问题;
public static synchronized Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
} }

懒,因为用到了才加载。

饿汉,汉就不解释,上面有。为什么叫饿?因为不管你有没使用这个单例,它都会实例化,在内存中,好像一个很饥饿的人,不管什么,先吃了再说。

具体如下:

//饿汉模式
public class Singleton2 {
//私有化构造方法,使得外表不能用new产生一个实例。
private Singleton2(){}
//饿汉模式,不管你有没用这个实例,先实例化。
private static Singleton2 instance =new Singleton2();
public static Singleton2 getInstance(){
return instance;
}; }

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

  1. JAVA设计模式-单例模式(Singleton)线程安全与效率

    一,前言 单例模式详细大家都已经非常熟悉了,在文章单例模式的八种写法比较中,对单例模式的概念以及使用场景都做了很不错的说明.请在阅读本文之前,阅读一下这篇文章,因为本文就是按照这篇文章中的八种单例模式 ...

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

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

  3. 创建模式--单例模式Singleton(JAVA)

    创建模式之单例模式        在面试时经常会有人问单例模式,单例模式是在整个系统运行中仅且仅有一个实例,在被调用.我们熟知的Calendar就是这种,        Calendar.newIns ...

  4. JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码

    反射技术大量用于Java设计模式和框架技术,最常见的设计模式就是工厂模式(Factory)和单例模式(Singleton). 参考URL: http://blog.csdn.net/xiaohai79 ...

  5. 【Java】单例模式(Singleton)

    重新搞一波 复习巩固 简单记录 慕课网 Java工程师 文章目录 单例概述 设计模式 单例模式(Singleton) 参考资料 单例概述 Singleton Pattern 单例模式是Java中最简单 ...

  6. Java 设计模式 —— 单例模式

    1. 概念: 单例模式是一种常用的软件设计模式.核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果 ...

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

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

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

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

  9. ooad单例模式-Singleton

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

随机推荐

  1. SSH多表操作入门

    这个系统写到这里,所涉及到的都是单表的操作,增删改查,现在功能需要完善,涉及到多表操作,开始是毫无头绪,书上的代码也没有现成的可以借鉴,想来就从最简单的开始.问题出现了很多,不过最后在龙哥的提示下还是 ...

  2. codeforces 1288C. Two Arrays(dp)

    链接:https://codeforces.com/contest/1288/problem/C C. Two Arrays 题意:给定一个数n和一个数m,让构建两个数组a和b满足条件,1.数组中所有 ...

  3. 关于KMP的next函数的原理分析

    KMP是上学期学数据结构时候学的,当时就没学太明白,后来又自己琢磨了几次,但始终是一知半解.今天起床了又想起来KMP,以下是思考得到的一点东西. 首先学过kmp的都知道要写两个函数,一个计算next数 ...

  4. 从零开始教你做高保真原型图+UI 设计规范

    编者按:<从零开始设计App>系列到这篇已经是第三期了,上期是低保真原型图,这期@Sophia的玲珑阁 聊聊如何从零开始制作高保真原型图和UI 设计规范. 往期回顾: <设计师怎样从 ...

  5. IntelliJ IDEA 2017.3尚硅谷-----插件的使用

    在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都 是通过插件的方式来实现的.官网插件库:https://plugins.jetbrains.c ...

  6. windows 安装 MySQL

    windows 安装 MySQL MySQL 目录结构 成功完成 MySQL 数据库的安装和配置!

  7. Python的深拷贝、浅拷贝

    浅拷贝 定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值. 浅拷贝的特点: 公用一个值: 这两个变量的内存地址一样: 对其中一个变量的值改变,另外一个变量的值也会改 ...

  8. IDEA配置pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. Ad Hoc类问题

    __________________________________ Ad Hoc类问题的方法:(1)机理分析法.分析题目描述,推出算法. (2)统计分析法.追寻最终的数学模型. Problem 1: ...

  10. Eqaulize Prices

    There are n products in the shop. The price of the ii-th product is aiai. The owner of the shop want ...