文章目录
- 设计模式
- 说一下你的这两个项目用了什么设计模式?为什么要这么用?
- 说说什么是单例模式
- 1.饿汉式:在类初始化时直接创建实例对象,不管你是否需要这个对象,都会创建。 **没有线程安全问题**
- 2.懒汉式:延迟创建这个实例对象 (什么时候调用get方法 什么时候创建对象)
- 3.双检锁
- 说说你对代理模式的理解
- 工厂模式
- 装饰器模式是什么
- 代理模式和装饰器模式有什么区别?
- 策略模式
- 职责链模式基本介绍
- 适配器设计模式
- 知道观察者模式吗?
设计模式
10万字总结java面试题和答案(八股文之二)的设计模板部分没有看
说一下你的这两个项目用了什么设计模式?为什么要这么用?
说说什么是单例模式
整个系统只能使用一个对象实例。
(1)饿汉式单例模式的写法:线程安全
(2)懒汉式单例模式的写法:非线程安全
(3)双检锁单例模式的写法:线程安全
不论是饿汉式还是懒汉式都有一个共同特点:类是public修饰的,而且类里面只有一个public,其余的都是private
。
1.饿汉式:在类初始化时直接创建实例对象,不管你是否需要这个对象,都会创建。 没有线程安全问题
实现步骤:
- 私有化构造器(private)
- 自行创建,并且用静态变量保存(static)
- 向外提供这个实例 (public)
- 强调这是一个单例,我们可以用final修饰
//方法一:最朴素的方式public class Singleton {public static final Singleton INSTANCE = new Singleton();private Singleton() {};
}
//方法二,使用枚举类型,枚举类型表示该类型的对象是有限的几个。我们可以限定为一个,就成了单例public enum Singleton2 {INSTANCE;
}
//方法三:使用静态代码块 实现复杂逻辑构造器的饿汉式单例模式public class Singleton3 {//私有化有参构造器private Singleton3(String info){this.info = info;}private String info;public static final Singleton3 INSTANCE;//在静态代码块中进行初始化实例对象static {Properties props = new Properties();try {props.load(Singleton3.class.getClassLoader().