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

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

hot3.png

java设计模式之单例模式

一、概述

    1.1 简述

    单例模式是java23设计模式之一,分在创建模式上。主要用来处理一些重要的类,功能上在JVM上只有这个类的一个实例。例如:一个框架的配置文件和主要的逻辑处理类。

    1.2 特点

        a)单例类只能有一个实例。

   b)单例类必须自己创建自己的唯一实例。

   c)单例类必须给所有其他对象提供这一实例

二、实例

    2.1 饿汉设计模式:

        在class文件加载后直接new一个空间,后面无论用不用都不会被消失。典型的空间换时间

public class Hungry {	/**	 * @see 饿汉模式:直接在classloader的时候,就在堆上面创建实例。节约时间,但如果一直不掉用则浪费空间	 */	// 默认不可修改的静态引用。在解析了类的时候,直接new	private static final Hungry hungryInstence = new Hungry();	// 私有构成器、不可实例化(不能new)	private Hungry() {	}	// static的方法、对外调用	public static Hungry getInstance() {		return hungryInstence;	}}

    2.2 懒汉设计模式:

        使用静态的方法来判定需不需要,new一个空间,如果不用static方法,则不创造空间。典型的时间换空间。

public class LazySingle {	/**	 * @see 懒汉模式:在需要的时候才会创建、可以当作是延迟加载	 */	// 唯一引用	private static LazySingle lsingle = null;	// 私有构造器、防止实例化	private LazySingle() {	}	// 调用方法	public static LazySingle getInstance() {		if (lsingle == null) {			synchronized (LazySingle.class) {				if (lsingle == null) {					lsingle = new LazySingle();				}			}		}		return lsingle;	}}

    2.3 内部类

public class InSingle {	/**	 * @see 利用内部类	 */		// 内部类也是延迟加载	static class SingleHolder {		static InSingle isingle = new InSingle();	}	public static InSingle getInstance() {		return SingleHolder.isingle;	}}

转载于:https://my.oschina.net/u/2246410/blog/596565

你可能感兴趣的文章
测试二进制数字
查看>>
HashMap的工作原理及其相关的知识点
查看>>
Tomcat服务器学习和使用(一)
查看>>
redis cluster所有节点IP修改处理方案
查看>>
单点登录的基本原理
查看>>
Vector Math for 3D Computer Graphics
查看>>
问题3:点击应用icon,会卡几秒后才进入到启动界面
查看>>
yii2环境搭建(ubuntu下nginx+php+mysql+yii2)
查看>>
30. Substring with Concatenation of All Words
查看>>
Core Data入门
查看>>
Linux下安装配置PHP环境(上)---Apache2
查看>>
自定义ViewGroup (2)支持滑动,并处理多指触摸可能产生的跳动问题
查看>>
Mac 下安装Redis
查看>>
oracle客户端安装
查看>>
在网页在播放flv格式的视频
查看>>
kvm虚拟机vnc和spice配置
查看>>
css设计模式
查看>>
Java IO 之 介质流
查看>>
JS生成二维码
查看>>
Spring 源码分析(三) —— AOP(二)Spring AOP 整体架构
查看>>