什么是单例模式,懒汉式和饿汉式使用方式
什么是单例模式,单例模式解决的问题
单例 听这个名字就知道是单着的,唯一的,例:就是实例
单例合起来就是这个类在整个系统中值能有一个实例对象可被获取和使用的代码模式,就称之为单例模式。
单例模式怎样来操作;
一: 这个类只能有一个唯一的实例;
【构造器私有化】
二:这人个类要自己创建自己的实例
【含有一个该类的静态变量来保存着个类的实例】
三:这个类必须自己向外界去提供这个实例
提供实例有两种方法【1、直接暴露的方式】【2、用静态变量的get方法获取】
创建单例模式有两大类 :饿汉式:饿汉式是运行时就加载进来 线程是安全的
饿汉式有三种,1.直接实例化 2.枚举 3.静态代码块实现
懒汉式: 懒汉式不是在程序运行时就加载,而是在需要的时候加载进来 线程不太安全
懒汉式三种实现方式:1.线程不安全,适用于但线程 2.线程安全【适用于多线程】
3.静态内部类【适用于多线程】
接下来我们就来用代码来演示一下单例模式的各个用法吧
/*** 饿汉式 直接获取实例*/
class SingleExample {/*** 首先聊一下为什么要有单例类的出现,它又是解决什么问题的应该怎么去写* 1 当我们想有一些数据不可以共享但不被外界所改变构造器私有化* 2 自己创建自己的实例对象* 3 提供一个对外获取实例的方式*/
// 自己创建一个自己的实例对象public static final SingleExample INSTANCE = new SingleExample();
// 私有化构造器private SingleExample() {}
}-----
*** 枚举类型是创建有限个实例。jdk1.5 以后的出现的enum*/
enum SingleExample1{INSTANCE;
}---
class SingleExample2{public static SingleExample2 INSTANCE;private String info;private SingleExample2(String info) {this.info = info;}static {Properties pro = new Properties();
//single.properties文件名,可以在文件获取需要的实例try {pro.load(SingleExample2.class.getClassLoader().getResourceAsStream("single.properties"));INSTANCE = new SingleExample2(pro.getProperty("info"));} catch (IOException e) {e.printStackTrace();}}public static SingleExample2 getINSTANCE() {return INSTANCE;}public static void setINSTANCE(SingleExample2 INSTANCE) {SingleExample2.INSTANCE = INSTANCE;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}----
/*** 懒汉式单线程创建 线程存在不安全性*/
class SingleExample3{public static SingleExample3 INSTANCE = null;private SingleExample3(){}public static SingleExample3 getInstance(){if (INSTANCE == null) {INSTANCE = new SingleExample3();}return INSTANCE;}
}------
*** 懒汉式多线程创建 线程安全*/
class SingleExample4{public static SingleExample4 INSTANCE = null;private SingleExample4(){}public static SingleExample4 getInstance(){if(INSTANCE == null) {synchronized (SingleExample4.class) {if (INSTANCE == null) {INSTANCE = new SingleExample4();}}}return INSTANCE;}
}------/*** 懒汉式 静态内部类创建*/
class SingleExample5{private SingleExample5() {}private static class Inner {private static final SingleExample5 INSTANCE = new SingleExample5();private static SingleExample5 getInstance() {return Inner.INSTANCE;}}
什么是单例模式,懒汉式和饿汉式使用方式相关推荐
- 单例模式懒汉式和饿汉式区别
单例模式懒汉式和饿汉式区别 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单 ...
- Java单例模式--------懒汉式和饿汉式
Java单例模式--------懒汉式和饿汉式 单件模式用途: 单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用. 单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统 ...
- 单例模式懒汉式和饿汉式的区别
文章目录 一.单例模式 二.懒汉式和饿汉式 一.单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最 ...
- 单例模式——懒汉式和饿汉式详解
单例模式属于创建型模式的一种,应用于保证一个类仅有一个实例的场景下,并且提供了一个访问它的全局访问点,如spring中的全局访问点BeanFactory,spring下所有的bean都是单例. 单例模 ...
- [设计模式]单例模式(懒汉式,饿汉式)
实现单例步骤: 1.构造函数私有化. 2.增加静态私有的当前类的指针变量. 3.提供静态对外接口,可以让用户获得单例对象. 单例 分为: 1.懒汉式 2.饿汉式 懒汉式 代码如下: class Sin ...
- 单例模式——懒汉式和饿汉式
所谓"懒汉式"与"饿汉式"的区别,是在与建立单例对象的时间的不同. "懒汉式"是在你真正用到的时候才去建这个单例对象: 比如:有个单例对象 ...
- Java单例模式--懒汉式和饿汉式(Demo)
你好我是辰兮,很高兴你能来阅读,本篇文章为大家讲解Java单例模式,相关的更多面试知识已经提前整理好文章可以阅读学习,分享获取新知,希望对Java初学者有帮助. 1.JAVA基础面试常考问题 : JA ...
- 单例模式懒汉式和饿汉式的线程安全问题
文章目录 单例模式(Singleton Pattern) 一.饿汉式 二.懒汉式 三.线程安全 单例模式(Singleton Pattern) 单例模式是 Java 中最简单的设计模式之一.这种类型的 ...
- 单例模式懒汉式和饿汉式入门详解
一.简介 通俗例子: 你用杯子喝可乐,喝完了不丢,继续去倒果汁喝,就是单例. 你用杯子喝可乐,直接扔了杯子,换个杯子去倒果汁喝,就是多例. 上台面的说法: 所谓单例模式,简单来说,就是在整个应用中保证 ...
最新文章
- ZHUOQING 发表论文整理
- 如何打开python的交互窗口-使用Python显示图形交互窗口
- 石川es6课程---9、面向对象-基础
- 《图解HTTP》读书笔记--第8章 确认访问用户身份的认证
- 做过这个NLP项目的面试通过率高达 90%!!
- 使用CloudIDE搭建简单java环境
- tune kubernetes eviction parameter
- 画圆角 - HTML5 Canvas 作图
- 数据库实验8 数据库安全性(用户与权限管理)实验
- C++学习日记5——模板
- 可行性研究及需求分析
- 零配置构建工具:parcel 1
- Cesium对entity的操作以及资源记录(增删改查)
- [我参加NVIDIA Sky Hackathon](模型训练ssd系列)
- 两台电脑共享宽带的方法
- Pcode粗略分析(1)
- ONVIF 获取RTSP URL过程
- foxmail皮肤_确实很棒!Foxmail 7.1邮箱客户端体验
- windows录屏_Windows及苹果电脑录屏攻略
- C++动态开辟数组空间