1、类的构造器私有化

2、本类内部创建对象(用本类内部public static静态方法返回该静态对象)

3、创建静态变量指向该类。

饿汉式和懒汉式的差异:

1、创建对象的时机不同!(饿汉模式在使用静态类时创建加载对象;懒汉模式在静态方法时加载创建对象)

2、应用场合不同

如果仅仅考虑效率问题,可以使用懒汉式

如果考虑线程安全问题,可以使用饿汉式(懒汉式容易出现数据错乱问题)

/**
* 此类用于演示单例设计模式
* 步骤:
* 1、构造器私有化
* 2、本类内部创建对象
* 3、提供public static方法,暴露该对象
*
* 饿汉式和懒汉式的差异:
*
* 1、创建对象的时机不同!
* 2、应用场合不同
* 如果仅仅考虑效率问题,可以使用懒汉式
* 如果考虑线程安全问题,可以使用饿汉式
*
*
* 经典案例:Runtime类就使用了饿汉式单例设计模式
*
* 【面试题】自己编写懒汉式代码!
*
*
*/
public class TestSingle { public static void main(String[] args) {
// Single1 s = new Single1(); // Single1 s1 = Single1.getInstance();
// Single1 s2 = Single1.getInstance();
//
// System.out.println(s1==s2);//true
//
// Single2.rate=1000;
Single2 s1 =Single2.getInstance(); Single2 s2 = Single2.getInstance(); System.out.println(s1==s2); } } //方式二:懒汉式 class Single2{ public static int rate;
//1、构造器私有化
private Single2(){} //2、本类内部创建对象 ★ private static Single2 s ; //3、提供public static方法,暴露该对象 public static Single2 getInstance(){
if(s==null)
s=new Single2();
return s;
} }
//方式一:饿汉式 class Single1{ public static int rate=100;
//1、构造器私有化
private Single1(){} //2、本类内部创建对象 private static Single1 s = new Single1(); //3、提供public static方法,暴露该对象
public static Single1 getInstance(){
return s;
}
}

Java设计模式——单例模式(static修饰)的更多相关文章

  1. Java设计模式の单例模式

    -------------------------------------------------- 目录 1.定义 2.常见的集中单例实现 a.饿汉式,线程安全 但效率比较低 b.单例模式的实现:饱 ...

  2. java设计模式单例模式 ----懒汉式与饿汉式的区别

    常用的五种单例模式实现方式 ——主要: 1.饿汉式(线程安全,调用率高,但是,不能延迟加载.) 2.懒汉式(线程安全,调用效率不高,可以延时加载.) ——其他: 1.双重检测锁式(由于JVM底层内部模 ...

  3. JAVA设计模式-单例模式(Singleton)线程安全与效率

    一,前言 单例模式详细大家都已经非常熟悉了,在文章单例模式的八种写法比较中,对单例模式的概念以及使用场景都做了很不错的说明.请在阅读本文之前,阅读一下这篇文章,因为本文就是按照这篇文章中的八种单例模式 ...

  4. Java设计模式 - - 单例模式 装饰者模式

    Java设计模式 单例模式 装饰者模式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 静态代理模式:https://www.cnblogs.com/StanleyBlogs/p/1 ...

  5. 【设计模式】Java设计模式 - 单例模式

    [设计模式]Java设计模式 - 单例模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 分享学习心得,欢迎指正,大家一起学习成长! 原创作品,更多关注我CSDN: ...

  6. Java 设计模式 —— 单例模式

    1. 概念: 单例模式是一种常用的软件设计模式.核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果 ...

  7. Java设计模式-单例模式(Singleton)

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

  8. 转!java设计模式--单例模式

    作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的结构 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一 ...

  9. Java设计模式 - 单例模式 (懒汉方式和饿汉方式)

    概念: Java中单例模式是一种常见的设计模式,单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的写法有好几种,这 ...

  10. java设计模式——单例模式(三)

    容器单例模式 之前学习Structs2,Spring框架时,经常会听到单例,多例.虽然这与单例模式不太一样,但是都很类似.在程序运行的时候,就加载所有的实例,然后用的时候直接取出 看下面代码: /** ...

随机推荐

  1. Qt带参数的信号和槽

    在Qt的开发过程中,信号带参数是很常见的,在使用带参数的信号槽时,有以下几点需要注意. 当信号和槽函数的参数数量相同时,它们的参数类型要完全一致. 信号和槽函数的声明: signals: void i ...

  2. 缓存promise技术不错哦

    1. pageManager.js const promiseList = {}; module.exports = { putData: function(pageName,data){ promi ...

  3. bzoj3754 Tree之最小方差树 最小生成树+推性质

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3754 题解 感觉这个思路挺神仙的. 后悔没有好好观察题目的数据范围,一直把 \(n\) 和 \ ...

  4. vue项目中 指令 v-html 中使用过滤器filters功能

    转载于简书 链接:http://www.jianshu.com/p/29b7eaabd1ba 问题 2.0 filters only work in mustache tags and v-bind. ...

  5. JS 图片转blob 转base64

    //转换为blob有跨域限制 var loadImageToBlob = function (url, callback) { if (!url || !callback) return false; ...

  6. HDU 5446 Unknown Treasure(lucas + 中国剩余定理 + 模拟乘法)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5446 题目大意:求C(n, m) % M, 其中M为不同素数的乘积,即M=p1*p2*...*pk, ...

  7. MVC模式 和 MVVM模式

    MVC模式 模型 - 视图 - 控制器或MVC,MVC是普遍的叫法,是一种软件设计模式,用于开发Web应用程序.模型- 视图 - 控制器模式是由以下三部分组成: 模型/Model - 一个负责维护数据 ...

  8. 详述 DB2 分页查询及 Java 实现的示例_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 博主说:有时候,我们需要对数据库中现有的数据进行大量处理操作(例如表中的某个字段需要全部更新等),如果直接使用selec ...

  9. HTML中的表单<form>标签

    一.HTML表单 HTML 表单用于搜集不同类型的用户输入. HTML 表单包含表单元素,表单元素指的是不同类型的 input 元素.复选框.单选按钮.提交按钮等等. 关于表单的更多内容可以参考htt ...

  10. Quick BI的宝藏工具——交叉表

    对于普通的表格展示数据,相信大家都非常熟悉了,今天给大家介绍的是BI领域的分析利器-交叉表,这个在BI分析场景中使用占比最多的分析利器.通过交叉表对数据的承载和管理,用户可以一目了然地分析出各种场景指 ...