设计模式(1)——单例模式(Singleton)

设计模式(1)——单例模式(Singleton)

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。

要点

一,某个类只能有一个实例构造器私有化
二,它必须自行创建这个实例含有一个该类的静态变量来保存这个唯一的实例
三,它必须自行向整个系统提供这个实例;对外提供获取该实例对象的方式:① 直接暴露; ② 用静态变量的get方法获取

两种常见的实现形式(饿汉式和懒汉式)

1、饿汉式

点击查看代码
public class SingletonTest1 {
    public static void main(String[] args) {
//        Bank bank1 = new Bank();
//        Bank bank2 = new Bank();

        Bank bank1 = Bank.getInstance();
        Bank bank2 = Bank.getInstance();

        System.out.println(bank1 == bank2);
    }
}

//饿汉式
class Bank {
    //1、私有化类的构造器
    private Bank() {
    }

    //2、内部创建类的对象
    //4、要求此对象也必须声明为静态的
    private static Bank instance = new Bank();

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

2、懒汉式

点击查看代码
public class SingletonTest2 {
    public static void main(String[] args) {
        Order order1 = Order.getInstance();
        Order order2 = Order.getInstance();
        System.out.println(order1==order2);
    }
}

//懒汉式
class Order{

    //1、私有化类的构造器
    private Order(){
    }

    //2、声明当前类对象,没有初始化
    //4、此对象也必须声明为static的
    private static Order instance = null;//与饿汉式的区别

    //3、声明public、static的返回类对象的方法
    public static Order getInstance(){
        if (instance == null) {
            instance = new Order();
        }
        return instance;
    }
}

3、二者区别

饿汉式:缺点对象加载时间过长,优点饿汉式是安全的。
懒汉式:缺点线程不安全(可改进),优点延迟了对象的创建

posted @ 2021-11-14 20:58  边缘气息  阅读(48)  评论(0)    收藏  举报