一:通过静态私有成员实现单例模式

(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单例模式 多种实现方式的更多相关文章

  1. java中全面的单例模式多种实现方式总结

    单例模式的思想 想整理一些 java 并发相关的知识,不知道从哪开始,想起了单例模式中要考虑的线程安全,就从单例模式开始吧. 以前写过单例模式,这里再重新汇总补充整理一下,单例模式的多种实现. 单例模 ...

  2. java单例模式的实现方式

    一.什么是单例模式 单例:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的软件设计模式之一,其目的是保证整个应用中只存在类的唯一个实例. 比如我们在系统启动时,需要加载一些 ...

  3. java中多种方式读文件

    转自:http://www.jb51.net/article/16396.htm java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内 ...

  4. Java 单例模式的七种写法

    Java 单例模式的七种写法 第一种(懒汉,线程不安全) public class Singleton { private static Singleton instance; private Sin ...

  5. C#高性能TCP服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...

  6. Java单例模式(转载)

    原文地址:1:http://www.cnblogs.com/hupp/p/4487521; 2:http://cantellow.javaeye.com/blog/838473 先罗列五种单例模式的实 ...

  7. 深入Java单例模式(转)

    深入Java单例模式 源自 http://devbean.blog.51cto.com/448512/203501 在GoF的23种设计模式中,单例模式是比较简单的一种.然而,有时候越是简单的东西越容 ...

  8. spring 文件模板下载多种实现方式

    针对于文件的下载,我们有很多种实现方式.业务场景是这样子的,要实现Excel文件的导入和导出功能,问题对于java的POI操作没有问题,所以实现文件的下载就相对简单,只需要从数据库取出相关的数据,针对 ...

  9. C# 高性能 TCP 服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C# 编写 TCP 服务的花样姿势!>. 本篇文 ...

随机推荐

  1. openstack--rabbitmq

    一.MQ 全称为 Message Queue, 消息队列( MQ ) 是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们. 消息传 ...

  2. Python 切片 day3

    你可以处理列表的部分元素——Python称之为切片 . 一.使用方法: 要创建切片,可指定要使用的第一个元素和最后一个元素的索引. 与函数range() 一样,Python在到达你指定的第二个索引前面 ...

  3. Linux基础:uniq命令总结

    本文只总结一些常用的用法,更详细的说明见man uniq和 uniq --help. uniq命令 uniq命令主要用于去重. 需要注意的是,不相邻的行不算重复值. 语法格式 Usage: uniq ...

  4. 回文词(Palindromes, UVa401)

    输入一个字符串,判断它是否为回文串以及镜像串.输入字符串保证不含数字0. 所谓 回文串,就是反转以后和原串相同,如abba和madam. 所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE. ...

  5. QT中的信号槽

    只有继承了QObject类的类,才具有信号槽的能力.所以,为了使用信号槽,必须继承QObject. 凡是QObject类(不管是直接子类还是间接子类),都应该在第一行代码写上Q_OBJECT. 不管是 ...

  6. 一个表空间使用率查询sql的优化

    话不多说,直接上运行计划: SQL> set lines 500; SQL> set pagesize 9999; SQL> set long 9999; SQL> selec ...

  7. [Angular] Introduce to NGXS

    Went though tow youtube videos about NGXS https://angularfirebase.com/lessons/ngxs-quick-start-angul ...

  8. OpenCV打开摄像头失败

    <span style="font-family: Arial, Helvetica, sans-serif;">#include <stdio.h>< ...

  9. Spring JDBC数据库开发

    针对数据库操作,Spring框架提供了JdbcTemplate类. 1.Spring JDBC的配置 创建配置文件applicationContext.xml,添加如下代码: <!--配置数据源 ...

  10. Xamarin Mono For Android、Monotouch 安装

    一.Windows下面的安装 1. 安装环境介绍:    Win8.1 企业版64位或Win7 64.VS2013 update4 2. 安装jdk    到oracle官方下载jdk-8u45-wi ...