单例设计模式

单例设计模式

设计模式种类繁多

创建型模式

共5种: 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式

共7种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式

共11种: 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式,

单例设计模式

饿汉式单例模式

package new3;

public class SingletonTest1 {
    public static void main(String[] args) {

        Bank bank1 = Bank.getInstance();
        Bank bank2 = Bank.getInstance();  //bank1与bank2是同一个对象
        System.out.println(bank1 == bank2) ;  //true
    }
}
//饿汉式单例模式
class Bank{
    private Bank(){

    }

    private static Bank instance = new Bank();  //非静态对象,静态方法无法调用

    public static Bank getInstance(){  //非静态方法需要先创建对象进行调用,但是主类无法创建对象
        return instance;  //返回类的对象
    }
}

懒汉式单例模式

package new3;

public class SingletonTest2 {
    public static void main(String[] args) {

        Order order1 = Order.getInstance();
        Order order2 = Order.getInstance();

        System.out.println(order1 == order2);  //true
    }
}
//懒汉式单例模式
class Order{
    //私有化类的构造器
    private Order(){

    }
    //声明当前类对象,没有初始化
    //此对象也声明为static
    private static Order instance = null;

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

区分:

  1. 饿汉式

优点:线程安全

缺点:加载时间长

  1. 懒汉式

优点:延时对象创建

缺点:线程不安全(可修改为安全)
单例设计模式

上一篇:关于内存的学习


下一篇:带你深入理解内存对齐最底层原理