Day15_设计模式

文章目录

  • 设计模式
      • 说一下你的这两个项目用了什么设计模式?为什么要这么用?
      • 说说什么是单例模式
          • 1.饿汉式:在类初始化时直接创建实例对象,不管你是否需要这个对象,都会创建。 **没有线程安全问题**
          • 2.懒汉式:延迟创建这个实例对象 (什么时候调用get方法 什么时候创建对象)
          • 3.双检锁
      • 说说你对代理模式的理解
      • 工厂模式
      • 装饰器模式是什么
      • 代理模式和装饰器模式有什么区别?
      • 策略模式
      • 职责链模式基本介绍
      • 适配器设计模式
      • 知道观察者模式吗?

设计模式

10万字总结java面试题和答案(八股文之二)的设计模板部分没有看

说一下你的这两个项目用了什么设计模式?为什么要这么用?

说说什么是单例模式

整个系统只能使用一个对象实例。
(1)饿汉式单例模式的写法:线程安全
(2)懒汉式单例模式的写法:非线程安全
(3)双检锁单例模式的写法:线程安全

不论是饿汉式还是懒汉式都有一个共同特点:类是public修饰的,而且类里面只有一个public,其余的都是private

1.饿汉式:在类初始化时直接创建实例对象,不管你是否需要这个对象,都会创建。 没有线程安全问题

实现步骤:

  1. 私有化构造器(private)
  2. 自行创建,并且用静态变量保存(static)
  3. 向外提供这个实例 (public)
  4. 强调这是一个单例,我们可以用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().

你可能感兴趣的:(面试题,设计模式,单例模式)