Day21

1. 设计模式了解么

常用的设计模式有单例模式、工厂模式、代理模式、适配器模式、装饰器模式、模版方法模式等等。像spring中的定义的bean默认为单例模式,spring中的factorybean用来创建对象的实例,它是工厂模式的体现。AOP面向切面编程是代理模式的体现,它的底层就是基于动态代理实现的。适配器模式在springmvc中有体现,它的处理器适配器会根据处理器规则适配相应的处理器执行。模版方法模式用来解决代码重复的问题,实现有AQS等

2. 请你讲讲单例模式、请你手写一下单例模式

  1. 单例模式是最简单的创建型设计模式。他会确保一个类只有一个实例存在。单例模式最重要的特点就是构造函数私有,从而避免外界直接使用构造函数实例化该类对象。

  2. 单例模式在Java中通常有两种表现形式:

    • 饿汉式:类加载时就进行对象实例化

      public class Singleton{
          private static Singleton instance = new Singleton();
          private Singleton(){};
          public static getInstacne(){
              return instance;
          }
      }
    • 懒汉式单例模式:类在加载时不会初始化instance,而是在第一次被调用时将自己初始化

      public class Singleton{
          private static Singleton instance = null;
          private Singleton(){};
          public static Singleton getInstance(){
              if(instance == null){
                  instance = new Singleton();
              }
              return instance;
          }
      }

      但是如果出现线程A和线程B并发调用时,可能会出现创建两个单例,为了解决这一问题,可以使用synchronized关键字对getInstance方法进行同步,这便是线程安全的懒汉式单例模式

  3. 单例模式的优点:在一个对象需要频繁地销毁,创建时优势尤其明显。在一个对象的产生需要比较多资源时,如读取配置,产生其他依赖对象时,则可以通过在启用时直接产生一个单例对象,然后用永久驻留内存的方式来解决

  4. 单例模式的缺点:无法创建子类,扩展困难,若要扩展,除了修改代码基本上没有第二种途径实现

3. 请你讲讲工厂模式

工厂模式的用意是定义一个创建产品的接口,然后将具体的创建推迟到子类中去。工厂模式可以分为简单工厂、工厂方法、抽象工厂。

简单工厂就是定义一个工厂类,根据传入的参数决定返回什么样的实例,被创建的实例具有共同的父类或接口。工厂方法是定义一个工厂接口,但创建过程让子类去实现,去决定返回一个什么样的实例。抽象工厂是对工厂方法的进一步深化,实现方式是提供一个创建一系列相关或相互依赖对象的接口而无需指定具体的类

最后修改:2024 年 06 月 08 日
如果觉得我的文章对你有用,请随意赞赏