我是靠谱客的博主 顺心口红,最近开发中收集的这篇文章主要介绍【每天一个java设计模式(三)】 - 单例模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

单例模式是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,指一个类只有一个实例,且该类能自行创建这个实例的一种模式。

单例模式有 3 个特点:

  • 单例类只有一个实例对象;
  • 该单例对象必须由单例类自行创建;
  • 单例类对外提供一个访问该单例的全局访问点。

通常有两种方式用来实现单例模式:懒汉式、饿汉式

懒汉式

懒汉式不在类加载的时候生成实例,只有当第一次调用 getlnstance 方法时才去创建这个单例。

//懒汉式
public class LazySingle {
    private static LazySingle instance;

    private LazySingle(){}

    public static synchronized LazySingle getInstance(){
        if (instance == null){
            instance = new LazySingle();
        }

        return instance;
    }
}

饿汉式

饿汉式中类一旦加载就创建一个单例,保证在调用 getInstance 方法之前单例已经存在了。

//饿汉式
public class HungrySingle {

    private final static HungrySingle instance = new HungrySingle();

    private HungrySingle(){}

    public static HungrySingle getInstance(){
        return instance;
    }
}

测试

public class SingleMain {
    public static void main(String[] args) {
        LazySingle lazySingle1 = LazySingle.getInstance();
        LazySingle lazySingle2 = LazySingle.getInstance();

        System.out.println("懒汉式创建的第一个对象:" + lazySingle1);
        System.out.println("懒汉式创建的第二个对象:" + lazySingle2);
        System.out.println(lazySingle1 == lazySingle2);

        HungrySingle hungrySingle1 = HungrySingle.getInstance();
        HungrySingle hungrySingle2 = HungrySingle.getInstance();

        System.out.println("饿汉式创建的第一个对象:" + hungrySingle1);
        System.out.println("饿汉式创建的第二个对象:" + hungrySingle2);
        System.out.println(hungrySingle1 == hungrySingle2);

    }
}

在这里插入图片描述
可以看到,不管是懒汉式还是饿汉式多次创建的都是对象完全一样,这也就体现了单例模式只会创建一个实例的特点。

前面几节的内容供大家参考:

  • 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则
  • 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
  • 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式

下一节:

  • 原型模式:【每天一个java设计模式(四)】 - 原型模式

最后

以上就是顺心口红为你收集整理的【每天一个java设计模式(三)】 - 单例模式的全部内容,希望文章能够帮你解决【每天一个java设计模式(三)】 - 单例模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部