B站尚硅谷学习之单例模式(一)

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

二、懒汉式及饿汉式实现思路及代码。

复制代码
/**
* 单例模式懒汉式实例
*/
public class LazySingletonTest {


//1、私有化构造方法,防止外部创建对象
private LazySingletonTest() {};

//2、要给该对象声明私有化,防止外部调用。
//5、因提供获取对象的方法是静态的,所以这个创建的对象必须用静态(static)来声明
private static LazySingletonTest instance = null;

//3、提供可供调用对象的方法,因该对象初始方式为null,需要判断该对象是否被创建,如果创建了直接返回,未创建,那么创建一个对象。
//4、因该类的构造函数被私有化,无法通过new的方式调用,必须通过类调用,所以该方法必须用静态(static)的方式。
public static LazySingletonTest getInstance() {
if (instance == null) {
instance = new LazySingletonTest();
}
return instance;
}

}

class LazyTest {
public static void main(String[] args) {
LazySingletonTest instance1 = LazySingletonTest.getInstance();
LazySingletonTest instance2 = LazySingletonTest.getInstance();
System.out.println(instance1 == instance2);
}
}
复制代码

 

复制代码
/**
* 单例模式-饿汉式
*/
public class HungrySingletonTest {

//1、私有化构造方法,防止外部创建对象
private HungrySingletonTest() {};

//2、要给该对象私有化,防止外部调用。
//5、因提供获取对象的方法是静态的,所以这个创建的对象必须用静态(static)来声明
private static HungrySingletonTest instance = new HungrySingletonTest();

//3、提供可供调用对象的方法。
//4、因该类的构造函数被私有化,无法通过new的方式调用,必须通过类调用,所以该方法必须用静态(static)的方式。
public static HungrySingletonTest getInstance() {
return instance;
}
}
class HungryTest {
public static void main(String[] args) {
HungrySingletonTest instance1 = HungrySingletonTest.getInstance();
HungrySingletonTest instance2 = HungrySingletonTest.getInstance();
System.out.println(instance1 == instance2);
}
}
复制代码

三、两种单例模式优缺点。

  1、饿汉式单例模式:随着类的加载而加载,优点是写法简单,没有线程安全的问题,缺点是占用内存。

  2、懒汉式单例模式:只有在需要的时候才加载,优点是节省内存,缺点暂时会有线程安全的问题,可通过家synchronized关键字解决此问题。

四、单例模式的应用。

  1、 jdk中runtime类。

  2、windows中的任务管理器和回收站。

  3、日志系统以及线程池的设计。

posted @   两颗枣  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示