单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意:

  • 1、单例类只能有一个实例。
  • 2、单例类必须自己创建自己的唯一实例。
  • 3、单例类必须给所有其他对象提供这一实例。

解决的问题

可以保证一个类在内存中的对象唯一性,必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

代码实现

常见的两种实现方式:饿汉式、懒汉式

饿汉式:

public class SingletonTest1
{
    public static void main(String[] args)
    {
        Bank bank1 = Bank.getBank();
        Bank bank2 = Bank.getBank();

        //验证这两个指的是不是同一个对象
        System.out.println(bank1==bank2);
    }
}
class Bank
{
    //1、私有化构造器
    private Bank()
    {
    }

    //2、内部创建类的对象(注意此对象也必须是静态的)
    private static Bank bank = new Bank();

    //3、提供公共的静态的方法,返回类的对象
    public static Bank getBank()
    {
        return bank;
    }
}

验证结果:

 

 

懒汉式:

public class SingletonTest2
{
    public static void main(String[] args)
    {
        Book book1 = Book.getInstance();
        Book book2 = Book.getInstance();

        System.out.println(book1 == book2);
    }
}

class Book
{
    //1、私有化构造器
    private Book()
    {}
    //2、声明当前类对象,并不初始化
    private static Book instance = null;

    //3、声明公共的静态的方法
    public static Book getInstance()
    {
        //需要对象时,判断对象是否存在,不存在时才创建
        if (instance == null)
        {
            instance = new Book();
        }

        return instance;
    }
}

两种方式的特点:

饿汉式是天然的线程安全的;懒汉式具有延时加载的特性(用的时候再创建对象)

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/xingel/p/13854771.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!