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; } }