1.1 先看几个经典的面试题
原型设计模式问题:
1) 有请使用UML类图画出原型模式核心角色
2) 原型设计模式的深拷贝和浅拷贝是什么,并写出深拷贝的两种方式的源码(重写 clone方法实现深拷贝、使用序列化来实现深拷贝)
3) 在Spring框架中哪里使用到原型模式,并对源码进行分析
beans.xml
4) Spring中原型bean的创建,就是原型模式的应用
5) 代码分析+Debug源码
1.2 先看几个经典的设计模式面试题
设计模式的七大原则: 要求:
1) 七大设计原则核心思想
2) 能够以类图的说明设计原则
3) 在项目实际开发中,你在哪里使用到了ocp原则
设计模式常用的七大原则有:
1) 单一职责原则
2) 接口隔离原则
3) 依赖倒转原则
4) 里氏替换原则
5) 开闭原则 ocp
6) 迪米特法则
7) 合成复用原则
金融借贷平台项目:
借贷平台的订单,有审核发布-抢单 等等 步骤,随着操作的不同,会改 变订单的状态, 项目中的这个模块实现就会使用 到状态模式,请你使用状态模式进行设计,并 完成实际代码
问题分析 :
这类代码难以应对变化,在添加一种状态时,
我们需要手动添加if/else,在添加一种功能时,
要对所有的状态进行判断。因此代码会变得越
来越臃肿,并且一旦没有处理某个状态,便会
发生极其严重的BUG,难以维护
解释器设计模式
1) 介绍解释器设计模式是什么?
2) 画出解释器设计模式的UML类图, 分析设计模式中的各个角色是什 么?
3) 请说明Spring的框架中,哪里 使用到了解释器设计模式,并 做源码级别的分析
1.5 解释器模式在Spring框架应用的源码剖析
1) Spring框架中 SpelExpressionParser就使用到解释器模式
2) 代码分析+Debug源码+模式角色分析说明
单例设计模式一共有几种实现方式?请分别用代码实现,并说明各个实现方式的 优点和缺点?
单例设计模式一共有8种写法,后面我们会依次讲到
1) 饿汉式 两种
2) 懒汉式 三种
3) 双重检查
4) 静态内部类
5) 枚举
设计模式的重要性
1) 软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现) 的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人 在1990年代从建筑设计领域引入到计算机科学的
2) 大厦 VS 简易房
3) 拿实际工作经历来说, 当一个项目开发完后,如果客户提出增新功能,怎么办?。
4) 如果项目开发完后,原来程序员离职,你接手维护该项目怎么办? (维护性[可读性、 规范性])
5) 目前程序员门槛越来越高,一线IT公司(大厂),都会问你在实际项目中使用过什么 设计模式,怎样使用的,解决了什么问题。
6) 设计模式在软件中哪里?面向对象(oo)=>功能模块[设计模式+算法(数据结构)]=>框 架[使用到多种设计模式]=>架构 [服务器集群]
7) 如果想成为合格软件工程师,那就花时间来研究下设计模式是非常必要的.