设计模式简介
设计模式的目的:
- 代码重用性(即:相同功能的代码,不用多次编写)
- 可读性(即: 编程规范性,便于其他程序员阅读和理解)
- 可扩展性(即:当增加新的功能时,非常方便,成为可维护性)
- 可靠性(即:当我们增加新的功能后,对原有功能没有影响)
- 使程序呈现高内聚,低耦合的特性
常用七大原则:
- 单一职责原则
- 接口隔离原则
- 依赖倒转原则
- 里氏替换原则
- 开闭原则ocp
- 迪米特法则
- 合成复用原则
经典问题
- 请使用UML类图画出原型模式核心角色,原型设计模式的深拷贝和浅拷贝是什么,并写出深拷贝两种方式源码(重写clone方法实现深拷贝),spring框架中哪里使用到原型模式,并对源码进行分析。
- 金融借贷平台审核、发布-抢单,状态模式,针对项目,完成设计和代码。
- 解释器设计模式是什么?画出UML类图,分析设计模式的各个角色是什么?请说明Spring框架中哪里用到了解释器设计模式,并做到源码级别的分析(例如 SpelExpressionParser)
- 单例设计模式一共有几种实现方式?请分别用代码实现,并说明各方法优缺点(饿汉式2种,懒汉式3种,双重检查、静态内部类、枚举)
设计模式重要性
- 设计模式是对软件设计种普遍存在(反复出现)的各种问题,所提出的解决方案。
- 大厦VS简易房(软件复用性,可扩展性,可读性,规范性,稳定性
- 一个项目开发完成后,如果客户提出增新功能,怎么办?(拥抱变化)
- 项目开发完成后,原来程序员离职,你接手维护项目怎么办?(维护性)
- 程序员门槛越来越高,算法和设计模式越来越重要
- 设计模式在软件种哪里?面向对象(oo)=>功能模块(设计模式+算法(数据结构))=>框架(使用多种设计模式)=>架构(服务器集群)