Java知识(单例模式)

单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证一个类只有一个实例而且该实例易于外界访问,从而方便对实例格式的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
分为两种模式
1.懒汉式
/**
* 单例模式类
* 懒汉式
* @author admin
*
*/
public class Singleton {
private Singleton(){
}
//全局对象
private static Singleton singleton=null;
public static Singleton getInstance(){
//判断全局对象是否为空
if (singleton==null) {
//如果为空,就创建对象
singleton=new Singleton();
}
//如果不为空,则直接返回该对象
return singleton;
}
public static void main(String[] args) {
Singleton singleton=Singleton.getInstance();
System.out.println(singleton.hashCode());
Singleton singleton2=Singleton.getInstance();
System.out.println(singleton2.hashCode());
}
}

2.饿汉式
/**
* 单例模式
* 饿汉式
* @author admin
*
*/
public class Singleton2 {
//跟懒汉式的区别:直接创建对象
private static Singleton2 singleton2=new Singleton2();
//私有构造
private Singleton2(){
}
public static Singleton2 getInstance(){
return singleton2;
}
public static void main(String[] args) {
Singleton2 singleton=Singleton2.getInstance();
System.out.println(singleton.hashCode());
Singleton2 singleton2=Singleton2.getInstance();
System.out.println(singleton2.hashCode());
}
}
懒汉式和饿汉式区别及优缺点
区别: 饿汉式不管有没有调用getInstance方法都会预先在系统中创建一个静态对象, 而懒汉式不会预先创建对象,只有在第一次调用时创建对象
饿汉式优点: 在多线程模式下是安全的
缺点: 没有调用方法前就被加载,会占用系统内存
懒汉式优点: 只有调用方法是才创建对象,调用前不会占用内存
缺点: 在多线程模式下不安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值