23种设计模式(常见面试题)

23种设计模式(常见面试题)

1.什么是设计模式?

答:
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

2.你当初为什么要学习设计模式?

答:

  • 为了看懂源代码:如果不懂设计模式的话,去看Jdk、Spring、SpringMVC、IO等的源码,会感到很迷惑,什么都看不懂。
  • 为了看看前辈们的代码:比如去工作不一定是直接分配给我新项目,很有可能是前辈的项目,如果他们用了设计模式,而自己不会,那会面临很大问题。
  • 为了敲自己的理想中的优质代码:生活需要仪式感,需要认真生活,对于代码,也是一样,自己开发的项目就想把项目当成自己的大宝贝一样。
3.简单说一下设计模式?你都知道哪些?

答:

  • 设计模式分为23种
  • 总体来说可以分为三大类:1.创建型模式( Creational Patterns )、2.结构型模式( Structural Patterns )、3.行为型模式( Behavioral Patterns )
  • 关注点:
    1. 创建型模式:关注对象的创建
    2. 结构型模式:关注类与对象之间的组合
    3. 行为型模式:关注对象之间的通信
  • 分类:
    1.创建型模式:
    (1)单例模式
    (2)工厂模式
    (3)抽象工厂模式
    (4)建造者模式
    (5)原型模式
    2.结构型模式
    (1)代理模式
    (2)适配器模式
    (3)桥接模式
    (4)装饰模式
    (5)外观模式
    (6)享元模式
    (7)组合模式
    3.行为型模式
    (1)模板方法模式
    (2)策略模式
    (3)命令模式
    (4)责任链模式
    (5)状态模式
    (6)观察者模式
    (7)中介者模式
    (8)迭代器模式
    (9)访问者模式
    (10)备忘录模式
    (11)解释器模式
4.能写两个单例模式吗?

答:

饿汉式:
public class Singleton { 
// 直接创建对象
 public static Singleton instance = new Singleton();
// 私有化构造函数 
private Singleton() { }
// 返回对象实例 
public static Singleton getInstance() {
 return instance; 
 }
}

懒汉式:
public class Singleton { 
// 声明变量
   private static  Singleton singleton = null;
// 私有构造函数 
   private Singleton() { }
// 提供对外方法
   public static Singleton getInstance() { 
// 两次判空是因为,等待锁时可能已经被人初始化过了,如果不再判断可能会重复初始化。
    if (singleton == null) {
      synchronized(this) {
        if (singleton == null) {
          singleton = new Singleton(); 
        } 
      }
    }

     return singleton;
    }
}
5.什么是单例?(或单例模式的核心作用是什么?)

答:
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。

6.哪些地方用到了单例模式?

答:

  • 应用程序的日志应用,一般是单例模式实现。
  • 多线程的线程池的设计,一般也是采用单例模式,因为线程池要方便对池中的线程进行控制
  • Windows的(任务管理器或者回收站),是单例模式,他不能打开俩个
  • 在项目种加载配置文件的类,一般是单例。
  • 一个项目的数据库连接池,一般是单例模式。因为数据库连接是一种数据库资源,每次都new的话,很消耗资源。
  • 在Spring中,每个bean默认就是单例的,这样做的优点是spring容器可以管理。
  • springmvc中,控制器对象是单例。
  • 在servlet中,每个servlet是单例。
  • 计数器使用的也是单例,然后保证同步访问。
7.未待完续

23种设计模式(常见面试题)_第1张图片

你可能感兴趣的:(23种设计模式,设计模式,java)