单例(Singleton)设计模式总结

1. 设计模式概述:
设计模式是在大量的`实践中总结`和`理论化`之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。
就像是经典的棋谱,不同的棋局,我们用不同的棋谱。"套路"

经典的设计模式一共有23种。

2. 何为单例模式(Singleton):
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

3. 如何实现单例模式(掌握):

> 饿汉式

> 懒汉式


4. 对比两种模式(特点、优缺点)
特点:
 > 饿汉式:“立即加载”,随着类的加载,当前的唯一实例就创建了
 > 懒汉式:"延迟加载",在需要使用的时候,进行创建。

优缺点:
 > 饿汉式:(优点)写法简单,由于内存中较早加载,使用更方便、更快。是线程安全的。 (缺点)内存中占用时间较长。
 > 懒汉式:(缺点)线程不安全 (放到多线程章节时解决)(优点)在需要的时候进行创建,节省内存空间。

饿汉式
package chapter08_oop3.src.com.atguigu02.singleton;

/**
 * ClassName: BankTest
 * Package: chapter08_oop3.src.com.atguigu02.singleton
 * Description:
 *
 * @Author 小白
 * @Create 2024/4/3 22:02
 * @Version 1.0
 */
public class BankTest {
    public static void main(String[] args) {
        Bank bank1 = Bank.getInstance();
        Bank bank2 = Bank.getInstance();
        System.out.println(bank1 == bank2);
    }


}

//饿汉式
class  Bank{

    //1.类的构造器私有化
    private Bank(){

    }

   //2.在类的内部创建当前类的实例(创建实例就是创建对象)   //可以看做当前类的一个属性
    //此属性也必须声明为static的
     private static   Bank intstance =  new Bank();

    //3.使用getXxx()方法获取当前类的实例  必须声明为static的
    public static Bank getInstance(){
        return  intstance;
    }




}

懒汉式

package chapter08_oop3_teacher.src.com.atguigu02.singleton;

/**
 * ClassName: GirlFriend
 * Description:
 *
 * @Author 尚硅谷-宋红康
 * @Create 9:09
 * @Version 1.0
 */
public class GirlFriendTest {
    public static void main(String[] args) {

    }
}

//懒汉式
class GirlFriend{
    //1.类的构造器私有化
    private GirlFriend(){
    }

    //2. 声明当前类的实例
    //4. 此属性也必须声明为static的
    private static GirlFriend instance = null;

    //3. 通过getXxx()获取当前类的实例,如果未创建对象,则在方法内部进行创建
    public static GirlFriend getInstance(){

        if(instance == null){

            instance = new GirlFriend();

        }

        return instance;


    }
}

相关推荐

  1. (Singleton)设计模式总结

    2024-04-04 08:56:04       36 阅读
  2. 设计模式Singleton

    2024-04-04 08:56:04       49 阅读
  3. 设计模式-模式Singleton

    2024-04-04 08:56:04       56 阅读
  4. 【C++设计模式 -- Singleton模式

    2024-04-04 08:56:04       52 阅读
  5. 设计模式模式 Singleton Pattern

    2024-04-04 08:56:04       54 阅读
  6. 设计模式-模式Singleton Pattern)

    2024-04-04 08:56:04       50 阅读
  7. 设计模式模式Singleton Pattern)

    2024-04-04 08:56:04       38 阅读
  8. 设计模式——模式Singleton

    2024-04-04 08:56:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 08:56:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 08:56:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 08:56:04       87 阅读
  4. Python语言-面向对象

    2024-04-04 08:56:04       96 阅读

热门阅读

  1. FPGA的就业前景

    2024-04-04 08:56:04       32 阅读
  2. 「CSS 只要三节课」之精通

    2024-04-04 08:56:04       38 阅读
  3. ETL工程师介绍

    2024-04-04 08:56:04       35 阅读
  4. 演绎推理【科学推理】

    2024-04-04 08:56:04       30 阅读
  5. for in与for of的区别

    2024-04-04 08:56:04       34 阅读
  6. C语言什么是全局变量?如何应⽤?

    2024-04-04 08:56:04       33 阅读
  7. 中值滤波算法与SSE2指令集并行优化

    2024-04-04 08:56:04       36 阅读