Java设计模式——单例模式(static修饰)
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修饰)的更多相关文章
- Java设计模式の单例模式
-------------------------------------------------- 目录 1.定义 2.常见的集中单例实现 a.饿汉式,线程安全 但效率比较低 b.单例模式的实现:饱 ...
- java设计模式单例模式 ----懒汉式与饿汉式的区别
常用的五种单例模式实现方式 ——主要: 1.饿汉式(线程安全,调用率高,但是,不能延迟加载.) 2.懒汉式(线程安全,调用效率不高,可以延时加载.) ——其他: 1.双重检测锁式(由于JVM底层内部模 ...
- JAVA设计模式-单例模式(Singleton)线程安全与效率
一,前言 单例模式详细大家都已经非常熟悉了,在文章单例模式的八种写法比较中,对单例模式的概念以及使用场景都做了很不错的说明.请在阅读本文之前,阅读一下这篇文章,因为本文就是按照这篇文章中的八种单例模式 ...
- Java设计模式 - - 单例模式 装饰者模式
Java设计模式 单例模式 装饰者模式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 静态代理模式:https://www.cnblogs.com/StanleyBlogs/p/1 ...
- 【设计模式】Java设计模式 - 单例模式
[设计模式]Java设计模式 - 单例模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 分享学习心得,欢迎指正,大家一起学习成长! 原创作品,更多关注我CSDN: ...
- Java 设计模式 —— 单例模式
1. 概念: 单例模式是一种常用的软件设计模式.核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果 ...
- Java设计模式-单例模式(Singleton)
单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频繁,对于一些大型的对象,这是一笔 ...
- 转!java设计模式--单例模式
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的结构 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一 ...
- Java设计模式 - 单例模式 (懒汉方式和饿汉方式)
概念: Java中单例模式是一种常见的设计模式,单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的写法有好几种,这 ...
- java设计模式——单例模式(三)
容器单例模式 之前学习Structs2,Spring框架时,经常会听到单例,多例.虽然这与单例模式不太一样,但是都很类似.在程序运行的时候,就加载所有的实例,然后用的时候直接取出 看下面代码: /** ...
随机推荐
- SpringBoot整合redis把用户登录信息存入redis
首先引入redis的jai包 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...
- MySQL数据库2表的增删改查
目录 一.数据表(文件): 1.1增 1.2查看表内数据 1.3改 1.4删除列表 1.5查看库内列表及表结构 1.6复制表结构 二.列类型:(*********) 2.1数字 2.2字符串 2.3时 ...
- 初识Django之前端后端与数据库的配置
目录 一.静态文件配置 二.关于form表单的补充 三.post请求出现403问题 四.request方法初识 4.1判断当前请求方式 4.2request.POST与request.GET 五.py ...
- Cookie 跨域???
跨域的 “域” 指的是 URL,包括协议.域名.端口. cookie 和跨域没关系,只和域名有关,和端口无关. http://test1.demo.com:8080 与 http://test2.de ...
- PHP基础教程 常见PHP错误类型及屏蔽方法
程序只要在运行,就免不了会出现错误,错误很常见,比如Error,Notice,Warning等等.这篇文章兄弟连PHP培训 小编来跟大家具体说一下PHP的错误类型和屏蔽方法.在 PHP 中,主要有以下 ...
- 陨石坑之webapi 使用filter中如何结束请求流
先看下正常的结束asp.net 请求流怎么写的 System.Web.HttpContext.Current.Response.Write(“end”); System.Web.HttpContext ...
- 【bzoj1123】[POI2008]BLO
*题目描述: Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. *输入 输入n<=1000 ...
- 安装memcached和elasticsearch服务并systemctl管理
[root@izbp18dv3a3metugyd02qxz bin]# rpm -qa | grep memcache [root@izbp18dv3a3metugyd02qxz bin]# yum ...
- Windows下zookeeper安装及配置
zookeeper有单机.伪集群.集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式.本章主要讲述单机部署方式. 系统要求 zookeeper可以运行在多种系统平台上面,表1展示了zk支持的 ...
- P1058立体图
一道大模拟 思路: 首先是打表找规律时间 仔细思考(暴力手算)后推出这么一个数组: //宽的增加量 ]={,,,};//1竖着摞,2横着摞,3前后摞 //长的增加量 ]={,,,};//1竖着摞,2横 ...