1、先看几个经典的面试题

  • 使用uml类图(描述类与类之间的关系的图)画出原型模式核心角色
  • 原型设计模式的深拷贝和浅拷贝是什么,并写出深拷贝的两种方式的源码(重写clone方法实现深拷贝,使用序列化来实现深拷贝)
  • 在Spring框架中哪里使用到了原型模式,并对源码进行分析
    • Spring中原型bean的创建,就是原型模式的应用
    • ….


  • 单例设计模式一共有几种实现方式,请分别用代码实现。
    • 8种
    • 饿汉式两种
    • 懒汉式三种
    • 双重检查
    • 静态内部类
    • 枚举
  • 设计模式的七大原则
    1. 单一职责原则
    2. 接口隔离~~
    3. 依赖倒转~~
    4. 里氏替换~~
    5. 开闭~~ OCP
    6. 迪米特法~~
    7. 合成复用~~(特有)

2、设计模式的重要性

  1. 一共用23个设计模式


  1. 软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在 1990 年代从建筑设计领域引入到计算机科学的


  1. 拿实际工作经历来说, 当一个项目开发完后,如果客户提出增新功能,怎么办?。(可扩展性,使用设计模式,软件具有很好的扩展性)


  1. 如果项目开发完后,原来程序员离职,你接手维护该项目怎么办? (维护性[可读性、规范性])


  1. 目前程序员门槛越来越高,一线 IT 公司(大厂),都会问你在实际项目中使用过什么设计模式,怎样使用的,解决了什么问题。


  1. 设计模式在软件中哪里?面向对象(oo)=>功能模块[设计模式+算法(数据结构)]=>框架[使用到多种设计模式]=> 架构 [服务器集群]


  1. 如果想成为合格软件工程师,那就花时间来研究下设计模式是非常必要的.


3、设计模式介绍

  1. 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式代表了最佳的实践。

**

  1. 设计模式的本质提高了 软件的维护性,通用性,和扩展性,并降低软件的复杂度


3.1 设计模式类型

设计模式分为三种类型。共23种

  • 创建型模式:单例模式,抽象工厂模式,原型模式,建造者模式,工厂模式


  • 结构性模式:适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式


  • 行为型模式:模板方法模式,命令模式,访问者模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式