java 单例方法,java单例模式使用及注意事项
1. 说明
1)单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例
2)单例模式分类:饿单例模式(类加载时实例化一个对象给自己的引用),懒单例模式(调用取得实例的方法如getInstance时才会实例化对象)(java中饿单例模式性能优于懒单例模式,c++中一般使用懒单例模式)
3)单例模式要素:
a)私有构造方法
b)私有静态引用指向自己实例
c)以自己实例为返回值的公有静态方法
2.实例
饿单例模式:
package com.wish.modedesign;
public class HungrySingleton {
private static HungrySingleton instance = new HungrySingleton();
private HungrySingleton(){
}
public static HungrySingleton getInstance(){
return instance;
}
}
懒单例模式:
package com.wish.modedesign;
public class Singleton {
private Singleton(){
}
private static Singleton instance;
public static synchronized Singleton getInstance(){ //多线程时注意线程安全
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
测试类Driver.java
package com.wish.modedesign;
public class Driver {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2); //true
}
}
3.优点和适用场景
1)单例模式的优点:
在内存中只有一个对象,节省内存空间。
避免频繁的创建销毁对象,可以提高性能。
避免对共享资源的多重占用。
可以全局访问。
2)适用场景:
需要频繁实例化然后销毁的对象。
创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
有状态的工具类对象。
频繁访问数据库或文件的对象。
4.使用时注意事项
1)使用时不能用反射模式创建单例,否则会实例化一个新的对象
2)使用懒单例模式时注意线程安全问题
3)饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)
java 单例方法,java单例模式使用及注意事项相关推荐
- java单例方法_Java单例模式
单例模式,是特别常见的一种设计模式,因此我们有必要对它的概念和几种常见的写法非常了解,而且这也是面试中常问的知识点. 所谓单例模式,就是所有的请求都用一个对象来处理,如我们常用的Spring默认就是单 ...
- java 单例 构造函数,Java单例模式学习
1.单例模式要点及实现角度 要点:一是某个类只能有一个实例: 二是它必须自行创建这个实例: 三是它必须自行向整个系统提供这个实例. 从具体实现角度来说,就是以下三点: 一是单例模式的类只提供私有的构造 ...
- java 单例 dcl_java 中单例模式DCL的缺陷及单例的正确写法
1 前言 单例模式是我们经常使用的一种模式,一般来说很多资料都建议我们写成如下的模式: /** * Created by qiyei2015 on 2017/5/13. */ public class ...
- java 单例写法_java 单例模式的几种写法
一.懒汉式 public classSingleton{private static Singleton instance = null;privateSingleton(){}public stat ...
- java 单例方法_Java-单例模式 - 惊觉
单例模式 单例(Singleton)模式是设计模式之一,最显著的特点就是一个类在一个JVM中只有一个实例,避免繁琐的创建销毁实例. 简单例子 先看简单的单例模式实现完整代码: Singleton_Te ...
- java 单例继承,Java单例模式的讲解
1,单例模式的要素 1)私有构造方法. 2)public static synchronized的getInstance()方法. 上述2个要素虽然可以保证单例模式的实现,但并不是最好的方式.因为当我 ...
- 【Kotlin】Kotlin 单例 ( 懒汉式 与 恶汉式 | Java 单例 | Kotlin 单例 | 对象声明 | 伴生对象 | get 方法 | ? 与 !! 判空 )
文章目录 I . 单例的懒汉式与恶汉式 II . Java 中的懒汉式与恶汉式 III . Kotlin 中对应 Java 的懒汉式与恶汉式 IV . Kotlin 对象 ( object ) 声明 ...
- java单例设计模式_Java设计模式之单例模式详解
在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过.我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以 ...
- java设计模式 单例_java设计模式--单例模式
单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...
最新文章
- android webview gettitle,Android-webview加载网页去除标题
- 网页元素坐标表示及坐标计算方法
- java 强制安卓竖屏,Android4.0强制横屏竖屏
- New Year and Ascent Sequence(二分)
- cesium billboard 点击 不想显示infobox
- linux ntp手动授时,关于我校NTP授时服务的使用说明
- qt翻译--QDragMoveEvent拖放类
- datetime报错 sql脚本_SQLSERVER 中datetime 和 smalldatetime类型分析说明
- 补习系列(15)-springboot 分布式会话原理
- mongodb之mongostat 的字段含义解析
- SQLyog 下载地址
- linux终端设置为管理员权限,ubuntu 中的管理员权限
- vue中点击高德地图获取经纬度
- No.44-VulnHub-Pegasus: 1-Walkthrough渗透学习
- 合肥工业大学计算机和信息学院,合肥工业大学计算机与信息学院
- Intellij IDEA集成sencha插件开发Extjs应用
- webstorm下载安装过程打开项目
- MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧
- 小白学机器学习西瓜书-第三章对数几率回归
- 华为OD机试 - 相对开音节(Java JS Python)
热门文章
- mysql中复合索引语法_MySQL 复合索引
- 流程管理精益--价值流程图讲解及构造(一)
- linux卸载python2.7_linux 全部卸载python yum 重新安装
- 最简单的Word公式编号方法
- 今天的Django教训汇总:pyecharts可以循环叠加-20211021
- Windows 安装,配置Mysql
- Docker 镜像上传到私有云和阿里云的超详细图文步骤
- 手机重置android,教你如何重置Android手机的解锁密码
- php mutile 手册,Redis技术手册 - Lamp资深讲师|lamp小强|linux|php|javascript - OSCHINA - 中文开源技术交流社区...
- 学习3D游戏建模需要英语很好吗?