单例(Singleton)设计模式总结

发布于:2024-04-04 ⋅ 阅读:(141) ⋅ 点赞:(0)
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;


    }
}


网站公告

今日签到

点亮在社区的每一天
去签到