设计模式:

是在大量的实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。就像是经典的棋谱,不同的棋局,我们用不同的棋谱 俗称”套路“

单例模式

所谓类的单例模式 就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象 我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类的内部仍然可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法 以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以 指向类内部产生的该类对象的变量也必须定义成静态的。

具体写法如下(4种)

1.单例(Singleton)设计模式 - 饿汉式

class Singleton{

//1.私有化构造方法

private Singleton(){

}

//2.类的内部提供一个当前类的实例

//4.此实例也必须静态化

private static Singleton single = new Singleton();

//3.提供公共的 静态的 get方法

public static Singleton getInstance(){

return single;

}

}

此种方法是饿汉式

特点: 不管是否用到 先new一个新的实例

2.单例(Singleton)设计模式 - 懒汉式

class Singleton{

//1.私有化构造方法

private Singleton(){

}

//2.类的内部先声明当前类

//4.必须静态化

private static Singleton single;

//3.提供公共的静态的 get方法

public static Singleton getInstance(){

//判断当前实例是否为null

if(single == null){

//如果为null,则new一个实例

single = new Singleton();

}

return single;

}

}

懒汉式

特点:先声明实例 当用到时再new出实例 线程不安全

3.单例(Singleton)模式 - 双重锁式

class Singleton{

//1.提供私有的构造方法

private Singleton(){

}

//2.声明实例

private volatile static Singleton single;

//3.提供公共的 静态的 get方法

public static Singleton getInstance(){

if(single == null){

synchronized(Singleton.class){

if(single == null){

single = new Singleton();

}

}

}

return single;

}

}

双重锁式: 重写了懒汉式,线程安全

4.单例(Singleton)模式 - 静态内部类式

class Singleton{

//1.提供私有的构造方法

private Singleton(){

}

//2.创建静态内部类

class StaticSingleton{

//3.类中实例化外部类的对象,用static final修饰

//final 修饰对象 此对象不能再new实例

private static final Singleton single = new Singleton();

}

//4.提供公关的 静态的 get方法 获取内部类中的外部类实例对象

public static Singleton getInstance(){

return StaticSingleton.single;

}

}

测试方法:

通过单例模式设计的类 无论实例化几次 在内存中都会只想一个地址

实例化方法:

Singleton single = Singleton.getInstance();

验证方法:

Singleton single1 = Singleton.getInstance();

Singleton single2 = Singleton.getInstance();

System.out.println(single1 == single2);

如果输出结果为 true 则表示内存地址相等 设计成功

java单例设计模式双重_Java 设计模式 ——单例模式(饿汉,懒汉,双重锁,静态内部类)...相关推荐

  1. filter java 是单例的吗_JAVA 设计模式之 单例模式详解

    单例模式:(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点.单例模式是创建型模式.单例模式在现实生活中应用也非常广泛. 在 J2EE 标准中,S ...

  2. java单例注册表_Java单例模式(Singleton)

    单例模式主要用于:有一些对象我们只需要一个,比如:线程池.缓存.对话框.处理偏好设置.注册表对象.日志对象以及配置文件对象.数据库连接对象等等.单例模式常用于管理共享资源,例如:数据库连接或者线程池. ...

  3. java 单例基类_PHP基于单例模式实现的数据库操作基类

    本文实例讲述了PHP基于单例模式实现的数据库操作基类.分享给大家供大家参考,具体如下: 配置文件: $db = array( 'host'=>'localhost', 'user'=>'r ...

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

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

  5. java中单例设计模式登记式单例类_java23种设计模式-创建型模式之单例模式

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频 ...

  6. java 单例设计模式 [

    为了保证类在内存中只能有一个对象,构造函数需要private外面不实例化对象,提供一个公共方法返回一个实例 //饿汉式 class Single{ //需要是static的,getInstance方法 ...

  7. 单例设计模式介绍||单例设计模式八种方式——1) 饿汉式(静态常量) 2) 饿汉式(静态代码块) 3) 懒汉式(线程不安全) 4) 懒汉式(线程安全,同步方法)

    单例模式 单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法). 比如Hibernate的 ...

  8. java 单例类_Java单例类

    单例类: 主要知识点: 1,单例类概念.特点 2,三种单例类懒汉,饿汉,双重加锁举例, 3,懒汉.饿汉区别以及单例类的总结: 1,概念:java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单 ...

  9. java 线程安全的单例_线程安全的单例模式的几种实现

    单例模式是常见的设计模式之一:目的是节省内存,限制了实例的个数:有利于java GC回收机制. 单例模式的三个好处: 1.控制资源的使用,通过线程同步来控制资源的并发访问 2.控制实例的产生个数,来达 ...

  10. (单例设计模式中)懒汉式与饿汉式在多线程中的不同

    /*目的:分析一下单例设计模式中,懒汉式与饿汉式在多线程中的不同!开发时我们一般选择饿汉式,因为它简单明了,多线程中不会出现安全问题!而饿汉式需要我们自己处理程序中存在的安全隐患,但是饿汉式的程序技术 ...

最新文章

  1. kerberos java实现,基于kerberos实现jaas登录
  2. linux环境变量管理器,运维 - linux(ubuntu) 环境变量管理 (持续更新)
  3. mysql检查备份数据脚本并在zabbix上告警
  4. 推荐 15 款常用开发工具
  5. GeneralUpdate 2021.08.14更新公告
  6. JAVA的多态的优劣,向上转型,向下转型什么意思?
  7. ubuntu 的使用(五)—— 桌面(desktop)
  8. Android--数据存储
  9. 图片模糊处理批量生产模糊数据集
  10. android view translateanimation,Android:有没有办法在TranslateAnimation之后获得View的最新位置?...
  11. 程序猿 C语言入门 颈椎,【计时器小工具】70行代码让你远离颈椎病,致所有的程序猿们...
  12. 安卓手机获取root权限
  13. Matlab之使用linearization估计人口数量
  14. 在豌豆荚安卓市场下载了伪造的ES文件管理器,该流氓apk会自动的下载手机游戏
  15. js定时器和延时调用的使用
  16. gradle编译慢解决_Gradle build 太慢,可能是你使用的姿势不对
  17. 王道2021版计算机考研书勘误表
  18. 项目管理:怎样做需求分析(一)
  19. PHP规范之PSR规范
  20. 《Python编程:从入门到实践》第13章:外星人来了

热门文章

  1. docker+MySQL+读写分离
  2. iOS开发之段落文字排版的属性与细节
  3. 工作经验总结:百万数据引发的性能瓶颈问题
  4. (转)SSDTShadow Hook的实现,完整代码
  5. 武魂金刚少林加点、装备坐骑及江湖技能选择
  6. error parsing xml:unbound prefix
  7. 语音信号处理基础(二)
  8. [转载] Python input()函数
  9. [转载] Python日历模块| 使用示例的weekday()方法
  10. [Bzoj1010][HNOI2008]玩具装箱toy(斜率优化)