Java单例模式 多种实现方式
一:通过静态私有成员实现单例模式
(1):私有化构造函数
(2):new静态实例属性对象,加锁。
单例类:
package SinglePag;
/*
* 构造函数私有化,结合锁+静态的概念 实现单例模式
*/
public class SingleDemo {
//防止类的实例化
private SingleDemo(){ }
//静态 实例 属性
private static SingleDemo singleD;
//获取对象实例 (单例的方式 ),锁住当前类(加锁) public synchronized static SingleDemo getInstance(){
if(singleD == null){
singleD = new SingleDemo();
}
return singleD;
}
}
实现:
package SinglePag;
public class SingleWinform {
public static void main(String[] args) {
SingleDemo singleDemo = SingleDemo.getInstance();
System.out.println(singleDemo.hashCode());
SingleDemo singleDemo2 = SingleDemo.getInstance();
System.out.println(singleDemo2.hashCode());
}
}
二:静态内部类实现单例模式
(1):私有化构造函数
(2):私有静态内部类,创建静态实例成员对象
(3):静态实例获取方法
单例类:
package SinglePag;
public class SingleInnerStatic {
//静态内置类
private static class InnerStatic{
//静态私有 实例属性
private static SingleInnerStatic singleInstance;
static{
singleInstance = new SingleInnerStatic();
}
}
//私有化构造函数,防止实例化
private SingleInnerStatic(){
}
public static SingleInnerStatic getInstance(){
return InnerStatic.singleInstance;
}
}
实现:
package SinglePag;
public class SingleStaticWinform {
public static void main(String[] args) {
SingleInnerStatic singleInnerStatic =SingleInnerStatic.getInstance();
System.out.println(singleInnerStatic.hashCode());
SingleInnerStatic singleInnerStatic2 = SingleInnerStatic.getInstance();
System.out.println(singleInnerStatic2.hashCode());
}
}
Java单例模式 多种实现方式的更多相关文章
- java中全面的单例模式多种实现方式总结
单例模式的思想 想整理一些 java 并发相关的知识,不知道从哪开始,想起了单例模式中要考虑的线程安全,就从单例模式开始吧. 以前写过单例模式,这里再重新汇总补充整理一下,单例模式的多种实现. 单例模 ...
- java单例模式的实现方式
一.什么是单例模式 单例:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的软件设计模式之一,其目的是保证整个应用中只存在类的唯一个实例. 比如我们在系统启动时,需要加载一些 ...
- java中多种方式读文件
转自:http://www.jb51.net/article/16396.htm java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内 ...
- Java 单例模式的七种写法
Java 单例模式的七种写法 第一种(懒汉,线程不安全) public class Singleton { private static Singleton instance; private Sin ...
- C#高性能TCP服务的多种实现方式
哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...
- Java单例模式(转载)
原文地址:1:http://www.cnblogs.com/hupp/p/4487521; 2:http://cantellow.javaeye.com/blog/838473 先罗列五种单例模式的实 ...
- 深入Java单例模式(转)
深入Java单例模式 源自 http://devbean.blog.51cto.com/448512/203501 在GoF的23种设计模式中,单例模式是比较简单的一种.然而,有时候越是简单的东西越容 ...
- spring 文件模板下载多种实现方式
针对于文件的下载,我们有很多种实现方式.业务场景是这样子的,要实现Excel文件的导入和导出功能,问题对于java的POI操作没有问题,所以实现文件的下载就相对简单,只需要从数据库取出相关的数据,针对 ...
- C# 高性能 TCP 服务的多种实现方式
哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C# 编写 TCP 服务的花样姿势!>. 本篇文 ...
随机推荐
- nginx + php 403 原因分析
环境:nginx + php 问题: 配置的网站,访问出现报错:Access Denied (403) 常见解决方法: 1.文件权限问题 可能是文件权限问题,没有读权限. 或者selinux没有关闭. ...
- jQuery默认select选择第一个元素
$("#id option:first").prop("selected", 'selected');
- apicloud 注意事项
页面布局时头部和内容一定要分开,状态栏寖入式要用.可以用api.sendEvent广播出去,api.addlisterten监听. api.openWin打开页面会有黑色闪屏,加bgColor:'#f ...
- PL\SQL(day05)
PLSQL 1.常用的访问数据库的相关技术 1) plsql 过程化的sql 2) proc/c++ 在c/c++语言中访问oracle数据库的技术 3) ado/odbc vc中访问数据库的技术 4 ...
- linux下关闭键盘的重复击键
https://askubuntu.com/questions/576421/disable-keyboard-repeat-from-command-line You can use the xse ...
- 继续聊WPF——自定义滚动条
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winf ...
- AtCoder ARC 082E - ConvexScore
传送门:http://arc082.contest.atcoder.jp/tasks/arc082_c 本题是一个平面几何问题. 在平面直角坐标系中有一个n元点集U={Ai(xi,yi)|1≤i≤n} ...
- flask日期和时间
本文翻译自The Flask Mega-Tutorial Part XII: Dates and Times 这是Flask Mega-Tutorial系列的第十二部分,我将告诉你如何以适配所有用户的 ...
- 洛谷 P3252 [JLOI2012]树
P3252 [JLOI2012]树 题目描述 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节点1是根节点,根的深度 ...
- JS计算两时间的天数
<html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body>& ...