什么是单例?:其定义是单例对象的类只能允许一个实例存在
单例的实现基本原理:1.将该类的构造方法定义为私有访问,不对外暴露从而使其他类不能实例化该类对象,只能通过该类的静态方法得到该类的唯一实例 2.在该类中定义一个静态方法(getInstance),当我们调用该方法时返回该类的实例对象
几种实现方式:
饿汉式单例模式:
/**
- 饿汉式静态常量式单例模式
- 优点:这种写法在JVM装载类的时候就实例化了,避免了线程同步的问题
- 缺点:在类装载的时候就实例化,没有达到延时加载的效果,造成内存浪费
- @author zhuys
*/
public class HungrySinglton {
//使用经常常量初始化实例
private final static HungrySinglton hungrySinglton = new HungrySinglton();
// 使用静态块初始化类的实例,与上面效果一致
// private static HungrySinglton hungrySinglton;
// static {
// hungrySinglton = new HungrySinglton();
// }
}
懒汉式单例模式(非同步):
/**
- 懒汉式单例模式:非同步
- 优点:在调用的时候初始化该单例
- 缺点:并非线程同步,不建议使用
- @author zhuys
*/
public class LazySingleton {
}
懒汉式单例(同步):
/**
- 懒汉式单例模式:同步
- 优点:在调用的时候初始化该单例并实现线程同步
- @author zhuys
*/
public class LazySyncSingleton {
}
内部类单例模式:
package pers.ly.learn.designModel.singleton;
/**
- 静态内部类单例模式:
- 静态内部类方式在InnerSingleton类被装载时并不会立即实例化
- 因为静态内部类是在调用的时候才会实例化,这样就达到了延时加载节省资源的效果
- 另外在静态内部类中通过静态常量初始化该单例又到达了保证其唯一性的效果
- 优点:避免了线程不安全,延迟加载,效率高。 推荐使用
- @author zhuys
*/
public class InnerSingleton {
}
相关推荐
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
Java 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象
Java单例模式,其中:单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种
详细讲解了Java单例模式的几种实现方式,并有详细的示例配合讲解.
java单例模式开发的7中写法,网上搜索的,可以看看
作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 PPT详细了单例模式的实现和使用场景
java单例模式的例子java单例模式的例子java单例模式的例子
源码 博文链接:https://tianlihu.iteye.com/blog/747737
Java单例模式Java单例模式Java单例模式Java单例模式
java单例模式及实现
Java设计模式-单例模式(懒汉和恶汉)
这段代码实现了一个简单的日志记录器Logger,其中使用了Java的单例模式。在类的构造方法中,首先定义...这个简单的示例代码展示了如何使用Java单例模式来实现一个日志记录器的简单功能,方便了对日志数据的管理和记录。
java单例模式代码实例
java单例模式连接数据库源码.可以直接引用只需加入相应的mysql 或 oracle的驱动,修改源码的连接地址用户名及密码。
详解JAVA单例模式及多种实现
java单例模式
代码中演示了Java设计模式中的单例模式,其中包括饿汉单例模式,懒汉单例模式以及序列化饭序列化单例模式。在实际的开发中,可以直接借鉴使用。
非常详细的Java单例模式讲解的文档,请求通过,已经上传过一次了
【ASP.NET编程知识】java 单例模式(饿汉模式与懒汉模式).docx