说到单例模式,大家一定想知道什么是单例模式,虽然在学习java的过程中,听到过单例模式,但是具体的内容却不知道。我们来简单打个比方,简单了解一下单例这个概念。在生活中,我们去超市买了一瓶矿泉水,喝完这瓶矿泉水,瓶子没有立马扔掉,而是拿回了家中,在我们第二次出去玩的时候,把瓶子装满水,继续喝水,这就是单例。我们在java开发过程中,经常会去连接数据库,那么在连接数据库的过程中,会用到数据库连接池。在这里,数据库连接池就是运用的单例模式,有且仅有一个连接池管理者,去管理多个连接池对象。接下来我们一起java中的单例模式详解。
单例模式是一种创建型模式,因进程需要,有时候我们只需要某一个类同时保留一个对象,不希望有更多对象,这个时候我们需要考虑到单例模式的设计了。单例模式具有三个特点,分别是,单例模式只能有一个实例;单例类必须创建自己的唯一实例;单例类必须向其他对象提供这一实例。
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,今天呢,咱们主要介绍一下饿汉式单例。
饿汉式单例是基于ClassLoder机制,使用static来定义静态成员变量或静态代码,让instance在类加载时就进行初始化,避免了同步问题,实现了线程安全,饿汉式单例的优势在于实现简单,劣势在于不是懒加载模式。同时,也存在两个问题,第一在需要实例之前就完成了初始化,在系统中单例场景较多的情况下,会造成内存的占用,加载速度慢的问题;第二由于在调用getInstance()之前就完成了初始化,如果需要给getInstance()函数传入参数,将无法实现。
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {
};
public static Singleton getInstance() {
return instance;
}
}
//static 静态代码块
public class Singleton {
private Singleton instance = null;
static {
instance = new Singleton();
}
private Singleton (){}
public static Singleton getInstance() {
return this.instance;
}
}
以上,就是今天为大家介绍的java中单例模式的学习,希望大家使用的愉快。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19