常见设计模式学习+面试总结

一 设计模式简介

二 面试总结

1 什么是单例模式?都有哪些地方用到单例?

**内存中只会创建且仅创建一次对象的设计模式,**保证一个类只有一个实例,并且提供一个访问该全局访问点。

应用场景:

网站的计数器,一般也是采用单例模式实现,否则难以同步。

应用程序的日志应用,一般都是单例模式实现,只有一个实例去操作才好,否则内容不好追加显示。

多线程的线程池的设计一般也是采用单例模式,因为线程池要方便对池中的线程进行控制

Windows的(任务管理器)就是很典型的单例模式,他不能打开俩个

windows的(回收站)也是典型的单例应用。在整个系统运行过程中,回收站只维护一个实例。

2 单例模式都有哪些类型?

单例模式有两种类型:

  • 懒汉式:在真正需要使用对象时才去创建该单例类对象
  • 饿汉式:在类加载时已经创建好该单例对象,等待被程序使用

懒汉式实现代码如下:

java 复制代码
public class Singleton {
    private static Singleton singleton;

    public Singleton() {
    }
	public static Singleton getInstance() {
	    if (singleton == null) {
	        singleton = new Singleton();
	    }
	    return singleton;
	}
}

以上代码会存在线程安全问题 :如果两个线程同时判断singleton为空,那么它们都会去实例化一个Singleton对象,这就变成双例了。所以,我们要解决的是线程安全问题。

解决方法就是在方法上加锁,或者是对类对象加锁

饿汉式实现代码如下:

java 复制代码
public class Singleton {
    public static Singleton singleton = new Singleton ();

    public Singleton () {
    }

    public  static Singleton getInstance(){
        return  singleton;
    }
}
相关推荐
leikooo14 分钟前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
Ivanqhz1 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
沙漠之主2 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
FPGA小徐2 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络
YOLO数据集集合2 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
知行EDI3 小时前
知行之桥 MaBang 端口使用指南——Create Order 订单创建篇
java·服务器·数据库
笑鸿的学习笔记3 小时前
C++笔记之大块顺序写
java·c++·笔记
打工仔折腾 AI3 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
殷色玫瑰4 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·linux·c语言·c++
IT大白鼠4 小时前
搜索系列 · 第 08 篇——面试收官:高频题与全景总结
elasticsearch·面试·nosql