Java设计模式之单例模式
2024-01-01 13:38:55
1、单例设计模式
作用/价值:保证某类的对象只有一个
具体步骤:
步骤一:私有化本类所有的构造方法
步骤二:在本类中创建唯一对象
步骤三:提供外界获取唯一对象的方式(公共的、静态的)
2、两种方式
饿汉式:
弊端:在类加载的过程中就会创建唯一对象,对象创建时机较早,有浪费内存的情况存在;
优点:就算在多线程环境下,也一定可以保证对象是唯一的;
懒汉式:
优点:在需要唯一对象的时候才会去创建对象,对象出现的时机不早也不晚,不会有浪费内存的情况;
弊端:在多线程环境下,可能不能保证对象是唯一的(需要上锁去解决这个问题);
具体代码如下:
/**
* 单例设计模式之饿汉式
* 弊端:在类加载的过程中就会创建唯一对象,对象创建时机较早,有浪费内存的情况存在
* 优点:就算在多线程环境下,也一定可以保证对象是唯一的
*/
public class Sun {
private Sun() {
}
//这里final修饰可以不用加
private static final Sun sun = new Sun();
public static Sun getInstance() {
return sun;
}
public static void test() {
System.out.println("单例模式之饿汉式");
}
}
/**
* 单例设计模式之懒汉式
* 优点:在需要唯一对象的时候才会去创建对象,对象出现的时机不早也不晚,不会有浪费内存的情况
* 弊端:在多线程环境下,可能不能保证对象是唯一的(需要上锁去解决这个问题)
*/
public class Moon {
private Moon() {
}
//这里可以不用赋值null,默认也会给null
private static Moon m = null;
public static Moon getInstance() {
if (m == null) {
m = new Moon();
}
return m;
}
public static void test() {
System.out.println("单例模式之懒汉式");
}
}
public class Main {
public static void main(String[] args) {
Sun s1 = Sun.getInstance();
Sun s2 = Sun.getInstance();
Moon m1 = Moon.getInstance();
Moon m2 = Moon.getInstance();
System.out.println(s1 == s2); //结果为true
System.out.println(m1 == m2); //结果为true
}
}
文章来源:https://blog.csdn.net/jnbbwyth/article/details/135324160
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!