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单例模式使用及注意事项相关推荐

  1. java单例方法_Java单例模式

    单例模式,是特别常见的一种设计模式,因此我们有必要对它的概念和几种常见的写法非常了解,而且这也是面试中常问的知识点. 所谓单例模式,就是所有的请求都用一个对象来处理,如我们常用的Spring默认就是单 ...

  2. java 单例 构造函数,Java单例模式学习

    1.单例模式要点及实现角度 要点:一是某个类只能有一个实例: 二是它必须自行创建这个实例: 三是它必须自行向整个系统提供这个实例. 从具体实现角度来说,就是以下三点: 一是单例模式的类只提供私有的构造 ...

  3. java 单例 dcl_java 中单例模式DCL的缺陷及单例的正确写法

    1 前言 单例模式是我们经常使用的一种模式,一般来说很多资料都建议我们写成如下的模式: /** * Created by qiyei2015 on 2017/5/13. */ public class ...

  4. java 单例写法_java 单例模式的几种写法

    一.懒汉式 public classSingleton{private static Singleton instance = null;privateSingleton(){}public stat ...

  5. java 单例方法_Java-单例模式 - 惊觉

    单例模式 单例(Singleton)模式是设计模式之一,最显著的特点就是一个类在一个JVM中只有一个实例,避免繁琐的创建销毁实例. 简单例子 先看简单的单例模式实现完整代码: Singleton_Te ...

  6. java 单例继承,Java单例模式的讲解

    1,单例模式的要素 1)私有构造方法. 2)public static synchronized的getInstance()方法. 上述2个要素虽然可以保证单例模式的实现,但并不是最好的方式.因为当我 ...

  7. 【Kotlin】Kotlin 单例 ( 懒汉式 与 恶汉式 | Java 单例 | Kotlin 单例 | 对象声明 | 伴生对象 | get 方法 | ? 与 !! 判空 )

    文章目录 I . 单例的懒汉式与恶汉式 II . Java 中的懒汉式与恶汉式 III . Kotlin 中对应 Java 的懒汉式与恶汉式 IV . Kotlin 对象 ( object ) 声明 ...

  8. java单例设计模式_Java设计模式之单例模式详解

    在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过.我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以 ...

  9. java设计模式 单例_java设计模式--单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

最新文章

  1. android webview gettitle,Android-webview加载网页去除标题
  2. 网页元素坐标表示及坐标计算方法
  3. java 强制安卓竖屏,Android4.0强制横屏竖屏
  4. New Year and Ascent Sequence(二分)
  5. cesium billboard 点击 不想显示infobox
  6. linux ntp手动授时,关于我校NTP授时服务的使用说明
  7. qt翻译--QDragMoveEvent拖放类
  8. datetime报错 sql脚本_SQLSERVER 中datetime 和 smalldatetime类型分析说明
  9. 补习系列(15)-springboot 分布式会话原理
  10. mongodb之mongostat 的字段含义解析
  11. SQLyog 下载地址
  12. linux终端设置为管理员权限,ubuntu 中的管理员权限
  13. vue中点击高德地图获取经纬度
  14. No.44-VulnHub-Pegasus: 1-Walkthrough渗透学习
  15. 合肥工业大学计算机和信息学院,合肥工业大学计算机与信息学院
  16. Intellij IDEA集成sencha插件开发Extjs应用
  17. webstorm下载安装过程打开项目
  18. MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧
  19. 小白学机器学习西瓜书-第三章对数几率回归
  20. 华为OD机试 - 相对开音节(Java JS Python)

热门文章

  1. mysql中复合索引语法_MySQL 复合索引
  2. 流程管理精益--价值流程图讲解及构造(一)
  3. linux卸载python2.7_linux 全部卸载python yum 重新安装
  4. 最简单的Word公式编号方法
  5. 今天的Django教训汇总:pyecharts可以循环叠加-20211021
  6. Windows 安装,配置Mysql
  7. Docker 镜像上传到私有云和阿里云的超详细图文步骤
  8. 手机重置android,教你如何重置Android手机的解锁密码
  9. php mutile 手册,Redis技术手册 - Lamp资深讲师|lamp小强|linux|php|javascript - OSCHINA - 中文开源技术交流社区...
  10. 学习3D游戏建模需要英语很好吗?