常用的设计模式及应用场景

(1)考察目标

考官主要是对一些常用设计模式和代码抽取优化能力的考核,问题可能涉及6大设计原则及23种设计模式。

(2)题目分析

比较熟悉的有:

单例模式:

保证一个类仅有一个实例,并提供一个全局访问点,比如一些配置文件或者管理类可以设计为单例,我们常用的线程池也是单例的。

模板方法:

在定义好的算法骨架下,允许子类为一个或多个步骤提供实现,一次性实现算法的不变部分,将可变部分留给子类实现,当子类实现代码逻辑雷同时,可以使用此设计模式。

工厂模式:创建对象需要大量的重复代码时,通过子类实现方法来创建对象。如Spring中通过工厂模式将创建对象的任务交给容器管理。

建造者模式:

讲复杂对象的构建和表示分离,适用于流程固定,但是顺序不一定固定的场景。如需要给一个对象多次给不同的属性赋值,可以使用链式调用传参,最后生成对象。

另外,如策略模式,观察者模式,模板方法模式,foreach中的迭代器模式,spring 中ASM的访问者模式,动态代理等都有一些了解。

(3)应用场景

JavaEE应用中,Spring用于创建IOC容器的监听器就是基于观察者模式的。

Spring中获取FileSystemResource和ClassPathResource等功能雷同的类时使用模板方法。

单例模式:包含懒汉饿汉式以及不同的变种,工厂类设计模式一般也设计为单例。项目中的一些配置,或者引入外部的sdk需要创建管理类,或者封装自己的框架时,需要用到单例

工厂方法:在编码时不能预见需要创建哪种类的实例。

(4)总结

本题主要考察的是:

1)常用设计模式

2)代码抽取优化能力

点击此处
隐藏目录